Skip to main content
Glama
mishan

ac-race-engineer

by mishan

ac-race-engineer

MCP 서버로, Claude를 오리지널 Assetto Corsa의 레이스 엔지니어로 변환합니다. AC의 공유 메모리 텔레메트리를 읽고, SQLite에 랩을 저장하며, 이를 엔지니어 수준의 요약으로 축소하고, 게임 내 설정 메뉴에 직접 표시되는 설정 파일을 읽고 쓸 수 있습니다.

Assetto Corsa가 실행 중인 Windows 머신에서 실행됩니다. 오리지널 AC만 해당(acpmf_* 공유 메모리 레이아웃 사용, ACC는 아님).

설치 (Windows — 쉬운 방법)

필수 조건: python.org의 Python 3.10+. 설치 프로그램의 첫 화면에서 **"Add python.exe to PATH"**를 체크하세요. Microsoft Store 빌드를 사용하지 마세요. 샌드박싱이 공유 메모리 접근을 차단합니다.

그런 다음, 이 폴더에서: install-windows.bat를 우클릭 → 열기 (또는 그냥 더블클릭).

끝입니다. 설치 프로그램이 Python을 찾고, 패키지를 설치하고, Claude Desktop 설정을 작성하고(기존 MCP 서버와 병합하고 먼저 백업을 수행), Assetto Corsa 설치 위치를 찾아 게임 내 Lua 앱을 복사합니다. git pull 후 언제든 다시 실행하면 됩니다. 제자리에서 업데이트됩니다.

Assetto Corsa를 찾을 수 없으면 위치를 알려주세요. 플래그는 .bat에 사용하고, .ps1에는 사용하지 마세요. Windows는 기본 실행 정책에서 .ps1 파일을 직접 실행하지 못하도록 차단하며, .bat은 바로 그 문제를 해결하기 위해 존재합니다:

install-windows.bat -AcPath "D:\Games\steamapps\common\assettocorsa"

기타 플래그: -SkipLuaApp, -Uninstall.

설치 후 Claude Desktop을 완전히 종료하고 다시 여세요. 창을 닫는 것만으로는 충분하지 않습니다. 시스템 트레이(오른쪽 아래, ^ 화살표 아래에 숨겨져 있을 수 있음)에서 Claude 아이콘을 우클릭하고 종료를 선택하세요.

Related MCP server: fastf1-mcp

설치 (수동)

python -m pip install -e .

그런 다음 서버를 claude_desktop_config.json에 추가합니다. 이 파일을 여는 가장 빠른 방법은 Claude Desktop → Settings → Developer → Edit Config입니다. 이렇게 하면 파일이 없으면 생성되고, 폴더가 열리므로 파일 시스템 탐색이 필요하지 않습니다.

%APPDATA%는 환경 변수이지 리터럴 경로가 아닙니다. C:\Users\<사용자>\AppData\Roaming으로 확장됩니다. 그리고 AppData는 숨김 폴더이므로 Explorer에서 보려면 View → Hidden items를 활성화하지 않으면 아무것도 표시되지 않습니다.

더 큰 문제는 %VAR%가 cmd.exe 구문이라는 점입니다. Windows Terminal은 기본적으로 PowerShell을 사용하며, 동일한 변수는 $env:VAR로 표기됩니다. 따라서:

위치

입력할 내용

PowerShell / Windows Terminal

notepad $env:APPDATA\Claude\claude_desktop_config.json

cmd.exe

notepad %APPDATA%\Claude\claude_desktop_config.json

Explorer 주소 표시줄

%APPDATA%\Claude (Explorer도 확장합니다)

Win+R (실행 대화상자)

%APPDATA%\Claude

파일 대신 폴더를 열려면 PowerShell에서 explorer $env:APPDATA\Claude를 사용하세요.

{
  "mcpServers": {
    "ac-race-engineer": {
      "command": "C:\\Users\\<you>\\AppData\\Local\\Programs\\Python\\Python312\\python.exe",
      "args": ["-m", "ac_race_engineer.server"]
    }
  }
}

python.exe의 절대 경로를 사용하고, 단순히 "python"을 사용하지 마세요. Claude Desktop은 셸의 PATH 없이 MCP 서버를 실행하므로, 단순 명령은 자주 조용히 실패합니다. 올바른 경로를 얻으려면:

py -c "import sys; print(sys.executable)"

(Get-Command python).Source를 사용하지 마세요. 일반적인 Windows에서는 ...\WindowsApps\python.exe(Microsoft Store 별칭 스텁)을 반환하는 경우가 많으며, 이는 잘못된 답변입니다. JSON에서는 백슬래시를 두 배로(\\) 해야 합니다.

(Claude Code를 사용하는 경우: claude mcp add ac-race-engineer -- python -m ac_race_engineer.server)

선택적 환경 변수 재정의:

  • AC_DOCS_DIR — AC 문서 폴더 (기본값 ~/Documents/Assetto Corsa)

  • AC_ENGINEER_DATA — DB + 범위 위치 (기본값 ~/.ac-race-engineer)

  • AC_ENGINEER_BRIDGE_PORT — 게임 내 앱 브리지 포트 (기본값 9666)

문제 해결

Claude가 도구를 나열하지 않습니다. Claude Desktop을 완전히 종료하고 다시 열었는지 확인하세요(트레이 아이콘 → 종료). 그런 다음 서버 로그를 읽으세요:

notepad $env:APPDATA\Claude\logs\mcp-server-ac-race-engineer.log

python을 입력하면 Microsoft Store가 열립니다(또는 "인식되지 않음"이라고 표시됨). Windows는 %LOCALAPPDATA%\Microsoft\WindowsApps\python.exe에 앱 실행 별칭 스텁을 제공하여, 실제 Python이 PATH에 없을 때 이름을 가로챕니다. python.org에서 Python을 설치할 때 "Add python.exe to PATH"를 체크하거나, py 런처(py -3 -m pip install -e .)를 사용하세요. python.org 설치 프로그램이 기본적으로 이를 설정합니다. Settings → Apps → Advanced app settings → App execution aliases에서 스텁을 비활성화할 수도 있습니다.

설치 프로그램은 이미 WindowsApps 아래의 모든 것을 무시하므로, 수동 설치 시에만 문제가 됩니다.

.ps1 cannot be loaded because running scripts is disabled. 실행 정책 때문입니다. 대신 install-windows.bat를 사용하세요. 시스템 설정을 변경하지 않고 해당 스크립트에 대해서만 정책을 우회합니다.

설정 값이 게임 내에서 적용되지 않습니다. 차량의 합법 범위를 벗어난 값을 쓰고 있으며 AC가 조용히 무시하고 있습니다. 다음 섹션을 참조하세요.

튜닝 루프

  1. AC를 시작하고 트랙에 진입하세요.

  2. Claude에게 "start recording and confirm you can see the session"라고 말하세요(start_recording, live_snapshot).

  3. 3–5랩을 주행하세요. 랩은 완료되면 자동으로 저장됩니다. 트랙 이탈(타이어 2개 이상 아웃)은 랩을 무효로 표시합니다.

  4. "Summarize my last lap and read my current setup"(list_laps, lap_summary, read_setup). 요약에는 코너별 최저 속도, 브레이크 지점, 타이어 압력/온도, 슬립 밸런스 메트릭(양수 = 언더스티어, 음수 = 오버스티어)이 포함됩니다.

  5. 차량의 상태를 논의하고, Claude는 write_setup으로 수정된 설정을 작성합니다(예: claude_v1).

  6. 피트로 들어와 설정 화면에서 claude_v1을 불러온 후 다시 주행하세요.

  7. "Compare my best lap on the new setup against lap N"(compare_laps) — 코너별 최저 속도와 브레이크 지점 델타가 변경이 실제로 효과가 있었는지 보여줍니다.

설정 값 클램핑 (권장)

AC는 차량의 setup.ini(data.acd 내부)에 정의된 범위를 벗어난 설정 값을 조용히 무시합니다. 서버가 각 차량의 합법적인 최소/최대/단계로 값을 클램핑하고 스냅하도록 하려면:

  1. Content Manager에서: 차량 페이지 → unpack data (또는 QuickBMS 사용).

  2. 차량의 setup.ini를 ranges 폴더에 복사하고, 차량 폴더 이름으로 이름을 지정하세요. 예: ks_mazda_mx5_cup.ini.

해당 폴더를 열려면(설치 프로그램이 이미 생성했습니다):

explorer $env:USERPROFILE\.ac-race-engineer\ranges

(cmd.exe: explorer %USERPROFILE%\.ac-race-engineer\ranges)

ranges 파일이 없어도 쓰기는 작동하지만 경고와 함께 반환되며, 설정 화면에서 값을 직접 확인해야 합니다.

게임 내 앱 (CSP Lua)

install-windows.bat가 자동으로 복사합니다. 수동으로 하려면 lua_app/race_engineer/를 assettocorsa/apps/lua/race_engineer/로 복사하세요(Custom Shaders Patch 필요; CSP를 활성화한 Content Manager를 사용하는 경우 이미 설치되어 있습니다). 세션 중 화면 오른쪽 가장자리로 마우스를 이동하면 나타나는 게임 내 앱 사이드바에서 활성화하세요.

Assetto Corsa가 설치된 위치를 모르시나요? Steam에서 Assetto Corsa를 우클릭 → Manage → Browse local files.

기능:

  • 주행 중 불만 태그 — 언더스티어 / 오버스티어 / 브레이킹 / 트랙션 버튼. 각각 앱의 설정 창을 통해 휠 버튼에 바인딩할 수 있습니다(CSP 컨트롤 바인딩으로 표시됨). 버튼을 누르면 정확한 스플라인 위치, 랩, 속도가 기록됩니다. Claude는 get_driver_notes로 이를 읽고 코너 텔레메트리와 연관시킵니다: "스플라인 0.34에서 언더스티어를 두 번 표시했습니다. 이는 프론트 슬립이 리어보다 0.09 초과하는 코너입니다."

  • 상태 오버레이 — 녹화 표시기 + 저장된 랩 수. 확인을 위해 알트탭할 필요가 없습니다.

  • Claude의 메시지 — send_driver_message가 오버레이에 메모를 표시합니다("claude_v2 저장됨 — 피트로 들어와서 로드하세요"); 확인(OK)으로 닫습니다.

앱은 서버의 HTTP 브리지와 127.0.0.1:9666에서 통신합니다(AC_ENGINEER_BRIDGE_PORT로 변경하고, Lua의 BASE도 일치시켜 수정). 브리지는 localhost만 바인딩합니다.

구조

ac_race_engineer/
  sim_info.py   shared memory structs (physics / graphics / static)
  collector.py  background sampler -> SQLite, lap boundary detection
  db.py         schema + storage
  analysis.py   corner detection, lap summaries, lap comparison
  setups.py     setup INI read/write, range clamping
  bridge.py     localhost HTTP bridge for the in-game app
  server.py     MCP tools
lua_app/
  race_engineer/  CSP Lua in-game app (copy to apps/lua/)
install-windows.ps1  one-shot Windows installer
install-windows.bat  double-clickable wrapper for the above

참고 사항 / 향후 아이디어

  • 샘플링은 25Hz입니다. DB를 작게 유지하면서 설정 작업에 충분합니다. 더 세밀한 트레이스를 원한다면 collector.py에서 TARGET_HZ를 높이세요.

  • 아웃랩(유효 시간 없음)은 자동으로 건너뜁니다.

  • 코너 감지는 일반적입니다(속도 최소값). 트랙별 코너 이름 맵이 있으면 Claude의 조언이 더 읽기 좋아집니다("T3/Variante" vs "0.34 지점의 코너").

  • CSP/Lua는 댐퍼 속도 및 표준 공유 메모리보다 더 많은 채널을 노출할 수 있습니다. 더 깊은 서스펜션 작업을 원한다면 Telemetrick의 소스가 좋은 참고 자료입니다.

Available Tools

14 tools
bridge_statusC

Health of the HTTP bridge the in-game app connects to.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description bears full responsibility for behavioral disclosure. It only says 'Health' without specifying whether the operation is read-only, fast, requires authentication, or what happens if the bridge is unreachable. The agent cannot infer safety or side effects from this minimal text.

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 of 9 words, which is very concise. It front-loads the key information. However, it could be slightly expanded to include output or usage context without becoming overly long.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having zero parameters and an output schema, the description does not explain what the health status encompasses (e.g., boolean, string, error details). The agent is left guessing the return structure. For a health-check tool, this is a significant omission.

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 tool has zero parameters and schema description coverage is 100%, so the baseline is 3. The description adds no additional parameter meaning beyond the schema, which is acceptable given no parameters exist. No improvement needed, but also no value added.

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 states 'Health of the HTTP bridge the in-game app connects to', which clearly identifies the resource (HTTP bridge) and implies the action is to retrieve its health status. It is distinct from sibling tools that deal with recording, sessions, laps, or setups, so purpose 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 is provided on when to use this tool versus alternatives. The description does not mention prerequisites, typical use cases (e.g., before making bridge-dependent calls), or when not to use it. This is a gap for a health-check tool that could inform agent decision-making.

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

compare_lapsA

Corner-by-corner comparison of two laps on the same track: min speed deltas, brake point deltas, and slip balance changes. Use to evaluate whether a setup change actually helped.

ParametersJSON Schema
NameRequiredDescriptionDefault
lap_id_aYes
lap_id_bYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses the analysis scope and output categories, which is helpful. However, it does not mention whether the tool is read-only, whether lap data must be from the same session/driver, or what happens if laps are incompatible. A 3 is fair given the lack of annotations and moderate behavioral detail.

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 concise (two sentences), front-loads purpose, and wastes no words. Every sentence serves a function: the first defines what the tool does, the second gives usage guidance.

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 tool's low complexity (2 simple integer parameters, an output schema is present, and no nested objects), the description is complete. With an output schema, the return value explanation is covered, and the description provides sufficient behavioral and usage context. No significant gaps remain.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It clarifies that lap_id_a and lap_id_b represent two laps on the same track, adding semantic meaning beyond the integer type. It does not define acceptable value ranges or format, but the purpose is clear enough for an agent to infer usage.

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 ('compare') and resource ('two laps on the same track'), and lists concrete outputs ('min speed deltas, brake point deltas, and slip balance changes'), making the purpose entirely clear and distinct from sibling tools like lap_summary or list_laps.

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?

The description explicitly states when to use this tool: 'Use to evaluate whether a setup change actually helped.' This provides strong guidance on the intended context and decision-making scenario, making it easy for an agent to select it over alternatives.

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

get_driver_notesB

Complaint tags the driver pressed in-game while driving (understeer, oversteer, braking, traction, note). Each has a spline position (0..1) directly comparable to corner apex_pos values from lap_summary, plus the lap_count when pressed (current lap = lap_count + 1). Correlate these with telemetry to know which corners the driver is unhappy with.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description must disclose behavior. It explains the data structure (spline position comparable to apex_pos, lap_count behavior with +1 offset) and hints at the correlation use case. However, it omits details like default sorting, pagination, read-only guarantee, or effect of session_id parameter. It adds some behavioral context but not comprehensively.

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 three sentences long, gets straight to the point about what the tool returns and how the data relates to other tools. It is front-loaded with key information. The only flaw is the omission of parameter explanations, which would improve completeness without adding much length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has two optional parameters and a complex output schema (context confirms output schema exists). The description explains the output's conceptual meaning (spline position mapping, lap count) very well, which is valuable. However, it completely ignores the input parameters (limit, session_id), leaving the agent without guidance on how to control the query. This is a significant gap in usability.

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

Parameters1/5

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

Schema coverage is 0%, meaning the schema has no descriptions for limit or session_id. The description does not mention these parameters at all, leaving their purpose and effects entirely undocumented. The description fails to compensate for the zero coverage, providing zero added meaning for the parameters.

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 that this tool retrieves 'complaint tags' pressed by drivers, listing types (understeer, oversteer, etc.) and providing spline position and lap count. The verb 'get' and resource 'driver notes' are explicit. It differentiates from siblings like lap_summary and compare_laps by focusing on subjective driver feedback rather than raw telemetry or lap comparisons.

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 explicit guidance on when to use this tool versus alternatives. The description implies it's for correlating driver complaints with telemetry corners, but it does not contrast with siblings like send_driver_message (for sending messages) or lap_summary (for objective data). An agent would have to infer usage from context rather than being directed.

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

lap_summaryA

Engineer's summary of one lap: lap time, throttle/brake/coast split, tyre pressures and core temps, per-corner min speed, brake points, and a front/rear slip balance metric (positive = understeer tendency, negative = oversteer tendency).

ParametersJSON Schema
NameRequiredDescriptionDefault
lap_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description must convey behavioral traits. It discloses that the tool returns a summary with specific metrics, and notably explains the slip balance metric's meaning (positive = understeer, negative = oversteer). However, it does not mention whether the tool is read-only, what happens if lap_id is invalid, or if it triggers side effects.

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 tool's purpose ('Engineer's summary of one lap') and then lists specific metrics in a clear, comma-separated format. Every element adds value, with the slip balance interpretation parenthetically added for clarity.

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 an output schema (context signals indicate 'Has output schema: true'), the description does not need to explain return format. It covers the key categories of data (time, driving splits, tyre info, corner details, balance metric) comprehensively enough for an engineer to know what to expect. Minor gap: no mention of units or data types, but the output schema likely handles that.

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

Parameters4/5

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

The input schema has only one parameter (lap_id) with no description, and schema coverage is 0%. The description compensates by not needing to detail lap_id further, as its purpose is obvious (identifies a lap). The description's primary value lies in detailing what the tool returns, which is beyond the schema's scope.

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 an engineer's summary of one lap, enumerating specific metrics like lap time, throttle/brake/coast split, tyre pressures, min speed, brake points, and slip balance. It distinguishes itself from sibling tools that list laps (list_laps) or compare laps (compare_laps) by emphasizing a detailed engineering summary of a single lap.

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 usage when an engineer needs per-lap details for analysis, but it does not explicitly state when to use this tool versus alternatives like compare_laps or list_laps. No guidance on prerequisites (e.g., lap must exist) or exclusions is provided.

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

list_lapsA

List recorded laps (most recent first), optionally for one session. Returns lap ids to use with lap_summary / compare_laps.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden. It discloses pagination (limit parameter), default ordering (most recent first), and that it returns IDs for downstream tools. However, it does not disclose whether the tool is read-only, whether authentication is required, or what the response structure looks like (though an output schema exists).

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 concise sentences. The first states what the tool does and its ordering behavior. The second explains the output's purpose (to get lap IDs for other tools). Every part is necessary and front-loaded.

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 no required parameters, a simple output schema, and only two parameters, the description is fairly complete. It explains the ordering, optional filtering, and intended use. The only gap is potential edge cases: what happens if no laps exist for the session or if session_id is invalid.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It adds meaning by noting the session_id is for optional session filtering, and the limit parameter is implied by the 'most recent first' ordering. However, it does not explain the default of 20 or the range/format of these parameters, leaving the schema to carry the rest.

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 it lists recorded laps sorted most recent first, and optionally filtered by session. It also specifies that the returned lap IDs are meant for use with lap_summary and compare_laps, distinguishing it from sibling tools like lap_summary and compare_laps which consume rather than list.

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 this tool (to get lap IDs for other tools) but provides no guidance on when not to use it or how it compares to alternatives like list_sessions. It doesn't mention ordering behavior beyond 'most recent first' or that session_id is optional.

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

list_sessionsB

List recorded sessions with car, track, lap count and best time.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

The description indicates this is a read-only operation that lists sessions with specific data fields. However, no annotations are provided, and the description does not disclose any potential side effects, performance implications, or what happens if no sessions exist. It is adequate but minimal.

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 that immediately states the tool's purpose and the information it provides. It is concise and front-loaded, though it could be slightly more informative about data format.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has zero parameters and an output schema exists (reducing need to detail return values), the description is nearly complete. It lacks guidance on usage context but covers the basic purpose. Adequate for a simple list tool.

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% (no parameters), but there are no parameters to explain. The description adds value by listing the output fields, which compensates for the lack of parameters. Baseline 3 is appropriate.

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 lists recorded sessions and the data fields included: car, track, lap count, and best time. It is specific and distinguishes the tool from siblings like list_laps or lap_summary.

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 use this tool versus others like list_laps or compare_laps. The description does not mention prerequisites (e.g., recording must exist) or when this tool is preferred.

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

list_setupsA

List saved setup names for a car/track combo. Use the internal car folder name (e.g. 'ks_mazda_mx5_cup') and track folder name.

ParametersJSON Schema
NameRequiredDescriptionDefault
carYes
trackYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description must disclose behavioral traits. It implies a read-only operation via the verb 'List', and adds the requirement for internal folder names. However, it does not mention potential errors, empty results, or other side effects, leaving the full burden partially unmet.

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, front-loaded with the core purpose, and every word adds value. The example is concrete and immediately useful.

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 tool is simple, and an output schema exists to describe return values. The description adequately communicates the tool's function and the critical parameter format. It could mention behaviors like empty lists or invalid combos, but these are not essential for a basic list operation.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It does so by explaining that both 'car' and 'track' parameters require internal folder names, and gives an example ('ks_mazda_mx5_cup'). This adds meaning beyond the bare string type in 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 clearly states the tool 'List saved setup names' with a specific scope ('for a car/track combo'). This distinguishes it from sibling tools like read_setup and write_setup, which operate on individual setup files rather than listing names.

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?

The description provides parameter usage guidance (use internal folder names), but does not explain when to use list_setups versus alternatives like read_setup or write_setup. There is no explicit when-to-use or when-not-to-use guidance for tool selection.

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

live_snapshotA

Current instantaneous state from shared memory: car, track, session status, tyre pressures/temps right now, fuel, last/best lap times. Useful to confirm AC is running and see conditions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses the source ('shared memory'), the instantaneous nature, and the data categories. It doesn't mention error states (e.g., if AC is not running) or update frequency, but for a snapshot tool with zero parameters, the key behaviors are sufficiently covered.

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 with no wasted words. The first sentence lists the data categories, and the second provides a use case. Every sentence earns its place, and critical information is front-loaded.

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 zero parameters and no annotations, the description is quite complete. It explains what data is returned and when to use it. It could optionally mention error handling (e.g., if AC is not running), but this is a minor gap for a simple snapshot tool.

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

Parameters4/5

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

There are 0 parameters and schema description coverage is 100%, so the schema provides no ambiguity. The description adds meaning beyond the schema by explaining what the output contains (car, track, session, tyre data, etc.), effectively documenting the return structure since no output schema details are known.

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 the tool returns 'current instantaneous state from shared memory' and explicitly lists the data categories (car, track, session status, tyre pressures/temps, fuel, lap times). This specific verb-resource pairing ('live snapshot' -> current state) distinguishes it from sibling tools like list_sessions or lap_summary, which return historical or derived 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 provides direct usage guidance with 'Useful to confirm AC is running and see conditions,' which implies immediate, low-latency reads. While it doesn't explicitly contrast with siblings, the 'live' nature and data categories hint that this is for real-time monitoring, not historical analysis.

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

read_setupB

Read a saved setup file. Returns each setting section and its value (e.g. PRESSURE_LF: 26).

ParametersJSON Schema
NameRequiredDescriptionDefault
carYes
nameYes
trackYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

No annotations exist, so description carries full burden. It describes the read operation and return format (sections with values). However, it does not disclose read-only nature, potential side effects, or authorization needs. The example is helpful but not exhaustive.

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?

Two sentences with an example are efficient and front-loaded. No wasted words, but the lack of parameter descriptions slightly reduces completeness for the length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 3 required parameters, no enum constraints, and an output schema exists, the description is adequate but not thorough. It covers purpose and return format, but leaves parameter semantics and usage context unaddressed. Completeness is moderate.

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 0%, so description must compensate. It explains the tool reads a saved file and returns settings, but does not describe what the three parameters (car, track, name) represent or how they identify the setup. The baseline is 4 due to zero coverage, but the description lacks specificity, making 3 appropriate.

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 reads a saved setup file and returns settings. It is distinct from siblings like write_setup, list_setups, and other operations. The example output adds clarity.

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 use this vs alternatives like list_setups or write_setup. No mention of prerequisites or that it requires previously saved setups. The description is purely functional without usage context.

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

recording_statusA

Check collector state: whether it's recording, which session, how many laps stored so far, and any error.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It accurately describes a read-only operation without side effects, listing the specific data points returned. This is sufficient transparency for a status check tool.

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 that efficiently covers all key behaviors without wasted words. It is perfectly concise.

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 tool has no parameters and an output schema exists, the description sufficiently explains what the tool does and what it returns. No gaps are present.

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

Parameters5/5

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

The tool has zero parameters and schema coverage is 100%, so the description correctly explains what the tool returns without needing parameter details. No additional parameter info is necessary.

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 the tool checks collector state, listing specific aspects like recording status, session, laps stored, and errors. It distinguishes itself from sibling tools by focusing on status rather than actions or queries.

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 this tool is for retrieving current state information, but does not explicitly state when to use it vs. alternatives like bridge_status or live_snapshot. No guidance is given on prerequisites or timing.

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

send_driver_messageA

Show a short message on the driver's in-game Race Engineer overlay (e.g. 'claude_v2 saved: softer front ARB, +0.5psi rears - pit and load it'). Keep it to a sentence or two; the driver is driving. The message stays up until dismissed, and is replaced by any newer message.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Describes key behaviors: message display location (overlay), persistence ('stays up until dismissed'), and replacement behavior. Since no annotations are provided, the description carries the full burden; it adequately covers the non-destructive, ephemeral nature. Missing details on error handling or prerequisites, but acceptable for a simple messaging tool.

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?

Extremely concise: two sentences and an example. Every sentence adds critical information—purpose, length constraint, persistence behavior. No fluff or repetition. The example is illustrative without being verbose.

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's simplicity (single parameter, no nested objects), the description covers the essential aspects: what the tool does, how to format the message, and the display/dismissal behavior. An output schema exists but is not described—acceptable since the agent can derive return type from the schema. Could mention potential failure modes (e.g., if the driver is in a menu), but the description is complete enough for regular use.

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

Parameters4/5

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

The input schema has only one parameter ('text') with no description (0% coverage). The description compensates by explaining that the text should be a short message, providing an example, and advising conciseness ('keep it to a sentence or two'). This adds meaningful usage guidance beyond the raw 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 clearly states the action: showing a short message on the driver's in-game Race Engineer overlay. It includes a concrete example, leaving no ambiguity about the tool's purpose. Among sibling tools (recording, snapshot, setups), it stands out uniquely.

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?

Provides explicit guidance to keep the message to a sentence or two because 'the driver is driving.' It also notes that the message persists until dismissed or replaced. However, it does not explicitly state when not to use this tool or contrast with alternatives (e.g., get_driver_notes), though such contrast is not strictly necessary given the unique function.

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

start_recordingA

Start recording telemetry from the running Assetto Corsa session. Laps are stored automatically as they complete. Idempotent.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description must carry behavioral transparency. It discloses idempotency and automatic lap storage, but it does not specify what happens if a session is not running or if recording is already active. While idempotent implies safe re-call, the behavioral description 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 description is extremely concise at two sentences (including the idempotent note). Every sentence adds value: purpose, side-effect, and behavioral trait. No wasted words, front-loaded with the core action.

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 no parameters and an output schema exists, the description is largely complete. It covers purpose, key behavior (idempotent), and a side effect (lap storage). It implicitly requires a running session. A brief mention of prerequisites or error cases would raise this further, but for a simple tool it is sufficient.

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

Parameters4/5

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

The input schema has 0 parameters and 100% schema coverage, giving a baseline of 4 per the rules. The description adds no parameter-level detail because none is needed, but the context provided (idempotent, automatic storage) indirectly informs behavior around parameters.

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 the exact action: 'Start recording telemetry from the running Assetto Corsa session.' It uses a specific verb and resource, and the mention of automatic lap storage further distinguishes this tool from siblings like stop_recording or live_snapshot.

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 usage context by referring to 'the running Assetto Corsa session.' It does not explicitly contrast with siblings (e.g., when to use stop_recording instead) but the purpose is clear. The idempotent hint suggests safe multiple calls, which is helpful but not a full guideline.

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

stop_recordingA

Stop the telemetry collector.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description carries full responsibility for behavioral disclosure. It only states the action ('stop') without revealing whether it is idempotent, what happens if no recording is active, what side effects occur (e.g., data flush), or what the output contains. The presence of an output schema mitigates this slightly, but the description adds no behavioral context beyond the verb.

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, front-loaded with the essential action. Every word is necessary; there is no filler or redundancy. For a simple stop tool, this is optimally concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (zero parameters, clear action) and the existence of an output schema, the description is minimally adequate. However, it lacks context about when to call (e.g., 'only when recording is active') and what the output signifies. For a tool that could be called inappropriately, this gap reduces completeness from optimal.

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

Parameters4/5

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

The tool has zero parameters and 100% schema coverage, so the description does not need to add param meaning. The baseline score of 4 applies because the schema already fully documents the parameter structure. The description does not need to elaborate further.

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 'Stop the telemetry collector' uses a specific verb ('Stop') and resource ('telemetry collector'), clearly distinguishing it from sibling tools like 'start_recording' (which starts) and 'recording_status' (which reports status). 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It does not mention prerequisites (e.g., that a recording must be active), nor does it explain when calling it would be ineffective or harmful. The sibling tool names imply context, but the description itself offers no explicit usage context.

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

write_setupA

Write a new setup file the user can load from the in-game setup menu.

values_json: JSON object of {SECTION: number}, e.g. {"PRESSURE_LF": 25, "PRESSURE_RF": 25, "ARB_FRONT": 4} base_setup: optional existing setup name to start from; unspecified sections are carried over unchanged.

If a ranges file exists for the car, values are clamped and snapped to the car's legal min/max/step; otherwise they're written as-is with a warning (AC silently ignores out-of-range values).

ParametersJSON Schema
NameRequiredDescriptionDefault
carYes
nameYes
trackYes
base_setupNo
values_jsonYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations exist, so the description must fully disclose behavior. It does explain clamping/snapping when ranges exist and a warning otherwise. However, it does not clarify whether an existing setup with the same name is overwritten, nor what the return value is. This leaves notable gaps, so a score of 3 is appropriate.

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 concise with a front-loaded purpose sentence, followed by parameter explanations and a key behavioral note. Every sentence adds value, including the example and ranges behavior. It is nearly perfect but could be slightly tighter (e.g., merging parentheses).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and 0% schema coverage, the description covers the main functionality and an important edge case (ranges). However, it omits what the output schema contains, whether the tool can overwrite existing setups, and any prerequisites (e.g., valid car/track names). It is adequate but leaves several gaps for a tool with these signals.

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 0%, so the description must compensate. It explains values_json with a clear example and describes base_setup's purpose. However, the required parameters car, track, and name are not described, leaving their semantics implied. Partial compensation keeps this at a mid score.

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 'write' and identifies the resource as 'setup file'. It clearly states the purpose: creating a new setup the user can load from the in-game setup menu. This distinguishes it from siblings like read_setup (read) and list_setups (list), earning a top score.

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 usage for creating or modifying a setup (via base_setup), but does not explicitly state when to use this tool versus alternatives. No exclusions or prerequisites are mentioned. The guidance is present only by implication, which is adequate but not strong.

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. 14 tool updatesv0.1.0
    • First observedbridge_status
    • First observedcompare_laps
    • First observedget_driver_notes
    • First observedlap_summary
    • First observedlist_laps
    • First observedlist_sessions
    • First observedlist_setups
    • First observedlive_snapshot
    • First observedread_setup
    • First observedrecording_status
    • First observedsend_driver_message
    • First observedstart_recording
    • First observedstop_recording
    • First observedwrite_setup

TDQS

A3.7/5.0

Scored across 14 tools

Disambiguation5/5

Each tool targets a distinct function: recording control, live data, session/lap listing, lap analysis, driver notes/messages, and setup management. No two tools overlap in purpose, making it easy for an agent to select the correct one.

Naming Consistency4/5

Most tools follow a verb_noun pattern (start_recording, list_sessions, write_setup), but a few like recording_status, live_snapshot, and bridge_status deviate. This minor inconsistency does not hinder readability.

Tool Count5/5

With 14 tools, the server is well-scoped for a race engineer domain. Each tool covers a necessary operation without redundancy or unnecessary bloat, fitting the expected complexity.

Completeness4/5

The tool surface covers recording, analysis, communication, and setup management. Minor gaps exist (e.g., no tool to delete sessions or view raw telemetry), but the core workflow for a race engineer is fully supported.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    A local MCP server that gives Claude (or any MCP-compatible AI client) access to Formula 1 race data. Load any session from 2018 onwards, ask questions in natural language, and get answers backed by real telemetry, timing, and strategy data.
    4
    17
    1
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Streams live Euro Truck Simulator 2 / American Truck Simulator telemetry and driving analytics to any MCP-compatible AI assistant, with read-only tools for truck state, navigation, fuel, job status, speeding checks, eco scoring, trip summaries, rest advice, and recent events, plus a headless Claude coach agent.
    10
    MIT