# Available Tools

> Complete catalog of Race Engineer capabilities organized by category.

The Race Engineer provides 96 tools in 20 groups. All tools are available through the MCP connection — your AI assistant discovers them automatically.

## How Tools Work

The Race Engineer uses a single `execute_code` tool. Your AI assistant writes TypeScript code that calls `brakinglab.*` functions to interact with your data. You don't need to know the function names — just describe what you want in natural language.

For example, asking "Show me my recent sessions at Spa" triggers the assistant to call `brakinglab.getSessions({ trackName: "Spa" })` behind the scenes.

## Sessions & Laps

Explore your telemetry sessions and lap data.

| Tool | Description |
|------|-------------|
| **getSessions** | List and filter your telemetry sessions by track, car, date, or session type |
| **getSessionDetail** | Full session detail with all laps, weather data, and driver info |
| **getSessionsFacets** | Discover the distinct tracks, cars, sims, and session types in your data before filtering |
| **getLatestSession** | Jump straight to your most recent session matching optional filters |

**Example prompts:**
- "Show me my last 5 sessions"
- "Find all my sessions at Monza with the GT3 Ferrari"
- "What was my best lap in yesterday's session?"

## Stints

Analyze performance across stints within a session.

| Tool | Description |
|------|-------------|
| **listSessionStints** | List stints (pit-to-pit runs) in a session with linked coaching reports |
| **getStintMetrics** | Detailed stint metrics including corner-by-corner performance |

## Corner Analysis

Deep dive into individual corners.

| Tool | Description |
|------|-------------|
| **getCornerAnalysis** | Per-corner entry speed, apex speed, exit speed, and lateral G |
| **getTrackTemplate** | Track structural map showing corners, defensive zones, and pit areas |
| **getTrackOutline** | The circuit's geometric outline as normalised points, so the assistant can draw the track |

**Example prompts:**
- "Which corners am I slowest at on this track?"
- "Show me the corner analysis for lap 12"

## Braking Zones

Detailed braking data for every zone.

| Tool | Description |
|------|-------------|
| **getBrakingZones** | MRP values, trail braking characteristics, brake profiles, and deceleration data |

**Example prompts:**
- "Show me my braking zones for the best lap"
- "Where am I braking too early?"

## Sample-Level Analysis

Zoom all the way into the raw telemetry — every brake, throttle, and speed sample — to see the *shape* of your driving, not just the aggregates. **Requires a Plus or Ultra plan.**

| Tool | Description |
|------|-------------|
| **getLapTrace** | Full-resolution trace of a lap (brake, throttle, speed, steering, gear, fuel, and more), windowed to any part of the lap and downsampled for analysis |
| **getZoneTrace** | Sample-level trace of a single braking zone — the initial hit, the release curve, and the trail-off toward the apex |
| **compareTraces** | Duel two laps sample-by-sample on a distance-aligned grid — including your lap vs. the current leaderboard leader's — with the cumulative time delta at every point |
| **getDrivingSymptoms** | Per-corner understeer / oversteer / traction-limit diagnosis, each backed by numeric evidence from the raw telemetry |
| **getZoneConsistency** | Rank your braking zones by how repeatable they are across every valid lap, to find where inconsistency is costing you time |

**Example prompts:**
- "Compare my best Spa lap against the leaderboard leader, corner by corner"
- "Where am I understeering, and how bad is it?"
- "Which braking zone am I least consistent in?"
- "Show me the brake-release shape through turn 1 on my fastest lap"

> Sample-level tools require a **Plus or Ultra** plan. Comparing against a leaderboard lap also needs that driver to have shared their telemetry publicly, and both laps must be the same car and track.

## Coaching

AI-powered coaching and analysis.

| Tool | Description |
|------|-------------|
| **saveCoachingReport** | Generate and save a structured coaching report (overview, pace, corners, actions) |
| **getCoachingReports** | List all coaching reports for a session |
| **getCoachingReport** | Get a specific coaching report by ID |

**Example prompts:**
- "Analyze my last session and give me coaching feedback"
- "Generate a coaching report for my Spa practice"

## Lap Analysis

Advanced comparison and trend analysis.

| Tool | Description |
|------|-------------|
| **compareLaps** | Compare 2-5 laps with per-zone braking deltas and time differences |
| **getProgressOverTime** | Track your improvement trend across sessions at a track |
| **getWeakCorners** | Identify your weakest corners ranked by inconsistency |
| **getSectorAnalysis** | Per-sector consistency and theoretical best for one session |
| **getTireDegradation** | Per-lap tyre wear, temperature and pressure trend across a session |

**Example prompts:**
- "Compare my best and worst laps from today's session"
- "How have I improved at Silverstone over the last month?"
- "What are my weakest corners at this track?"
- "How much were the tyres going off by the end of that stint?"

> Tyre data comes from snapshots the desktop client records during a session. If a
> session predates that capture, the engineer says so instead of inventing a trend.

## Race Calendar

Manage your race schedule.

| Tool | Description |
|------|-------------|
| **getUpcomingRaces** | Your future race events with preparation status |
| **getAllRaces** | Full calendar (past and future) with filters |
| **getRaceDetail** | Complete race detail with preparations, strategy, and linked sessions |
| **createRaceEvent** | Create a new race event |
| **updateRaceEvent** | Update race event details |
| **deleteRaceEvent** | Remove a race event |
| **linkSessionToRace** | Link a telemetry session to a race event as practice |
| **getUnlinkedSessionsForRace** | Find practice sessions that match a race's track and car |
| **getRaceReadinessData** | Gather all practice session data for a cross-FP readiness assessment |
| **saveRaceReadinessReport** | Save a readiness report evaluating your preparation across all practice sessions |
| **getRaceReadinessReport** | Retrieve an existing readiness report for a race |

**Example prompts:**
- "Am I ready for my race at Spa? Evaluate my practice sessions"
- "Generate a readiness report for this weekend's race"

## Race Preparation

Build structured preparation plans.

| Tool | Description |
|------|-------------|
| **getPreparation** | Full preparation with phases, checklist items, and progress |
| **getPreparationTemplates** | List built-in and custom preparation templates |
| **createPreparation** | Create a preparation from a template or custom phases |
| **updatePreparation** | Edit preparation notes and time tracking |
| **updatePreparationPhase** | Add, update, or delete a preparation phase |
| **updateChecklistItem** | Add, update, delete, or toggle checklist items |

**Example prompts:**
- "Help me prepare for my race at Spa next Saturday"
- "Create a preparation checklist for the 24h of Le Mans"

## Strategy

Race strategy calculations.

| Tool | Description |
|------|-------------|
| **generateStrategyFromTelemetry** | Auto-generate race strategy from practice data (fuel, pace, tire wear, stint plan) |
| **saveRaceStrategy** | Persist a strategy to a race on your calendar so it survives the conversation — editable in the app afterwards |

**Example prompts:**
- "Generate a fuel strategy for a 45-minute race based on my practice laps"
- "Save that strategy to my Spa race on Saturday"

> Every figure is recomputed on the server from your telemetry when it saves, so
> the card in the app can never disagree with what the engineer told you. Notes
> you wrote in the app are preserved when the engineer updates the strategy.

## Track Notepads

Access your corner notes and track observations.

| Tool | Description |
|------|-------------|
| **getTrackNotepads** | List your track notepads |
| **getTrackNotepad** | Full notepad with corner notes, pins, and video references |
| **createTrackNotepad** | Create a new track notepad |
| **updateTrackNotepad** | Update corner notes and pins |
| **deleteTrackNotepad** | Delete a track notepad |
| **linkNotepadToRace** | Link a track notepad to a race calendar event |
| **unlinkNotepadFromRace** | Remove a notepad-race link |

## Saved Comparisons

Manage saved lap comparisons.

| Tool | Description |
|------|-------------|
| **saveComparison** | Save a lap comparison with auto-computed deltas |
| **getComparisons** | List saved comparisons with filters |

## iRacing Integration

Access iRacing series and schedule data.

| Tool | Description |
|------|-------------|
| **searchIRacingSeries** | Search iRacing series by category, license, or name |
| **getSeriesSchedule** | Full season schedule for a series |
| **searchRacesThisWeek** | All series racing this week |
| **createRaceFromSchedule** | Create a calendar event from an iRacing schedule entry |

**Example prompts:**
- "What's racing this week that I can join with a C license?"
- "Add the GT3 race at Spa from this week's schedule to my calendar"

## Le Mans Ultimate

Browse Le Mans Ultimate series, tracks, and the current race week.

| Tool | Description |
|------|-------------|
| **searchLMUTracks** | Search Le Mans Ultimate tracks |
| **searchLMUCars** | Search LMU cars |
| **searchLMUSeries** | Search LMU series |
| **getLMUSeriesSchedule** | Full season schedule for an LMU series |
| **getLMUCurrentSchedule** | The current LMU race week across series |
| **getLMUSpecialEvents** | LMU special and endurance events |
| **createRaceFromLMUSchedule** | Create a calendar event from an LMU schedule entry |

**Example prompts:**
- "What's the current LMU race week?"
- "Add the Hyperpole round at Le Mans to my calendar"

## Hardware Vault

Access your hardware setups and datapacks.

| Tool | Description |
|------|-------------|
| **listDatapacks** | List your datapacks with filters |
| **getDatapack** | Full datapack detail with attached files |
| **listHardwareSetups** | List hardware setups with configuration summaries |
| **getHardwareSetup** | Full hardware setup with base config, pedals, and sim profiles |

## Imported Laps

Laps that did not come from the desktop client.

| Tool | Description |
|------|-------------|
| **getImportedLaps** | List the laps you imported from Garage61 CSVs (and older pre-Capture laps), with your own per-zone notes |

**Example prompts:**
- "What laps have I imported at Monza?"
- "Read back the notes I wrote on my imported Spa lap"

## Training

The closing move of the loop: turn a diagnosis into something you actually practise.

| Tool | Description |
|------|-------------|
| **createExerciseFromZone** | Build a trail-braking exercise from one braking zone of your own lap — the curve is generated server-side at 60 Hz and appears in Practice, ready to run with your pedals |
| **listCustomExercises** | List your custom exercises, with how many slots your plan leaves |
| **getExerciseResults** | Your practice scores from the Free Practice runner |
| **getBrakeMasterProgress** | Your Braking Rating, licence, streak and track progression |
| **getBrakeMasterLeaderboard** | Global, weekly, or the drivers ranked immediately around you |

**Example prompts:**
- "Find my worst corner at Spa and make me an exercise for it"
- "How did I score on that exercise? Am I getting better at it?"
- "Where am I on the Brake Master leaderboard?"

> Creating an exercise counts against the custom-exercise limit on your plan, and
> the engineer will tell you plainly when you have run out rather than failing
> silently. Leaderboard entries are anonymised and only include drivers who opted in.

## Setup Coaching

What a setup parameter actually does — on your car, not in the abstract.

> **Not switched on yet.** The tools ship with the engineer, but the reviewed
> corpus they answer from is still being curated, so for now they tell you it is
> coming rather than improvising. The [Setup Guide](/en/setup-guide) already
> publishes the sim-neutral half, free; what this adds on top is your car, your
> file and your session.

| Tool | Description |
|------|-------------|
| **explainSetupParam** | Explain ONE setup parameter from Braking Lab's reviewed knowledge corpus, anchored to your sim, your car and your own values |
| **getSetupTendencies** | Curated setup tendencies for ONE handling symptom — understeer, oversteer or traction-limited, optionally narrowed to a corner phase — human-reviewed, with per-car notes where we have written them |

Ask by whatever name you know it — plain language in your own language, the
canonical key, or the exact spelling your garage uses — and the engineer resolves
it to one parameter. The answer carries what it is, what it does per corner
phase, what it couples with, and a reviewed per-car note where we have written
one (cited, so you can go read the source). With a `sessionId` it also shows
**your own current value** from the setup the desktop client captured with that
session; with AI Setups on a Plus or Ultra plan, a vault setup works as the
anchor instead.

**Example prompts:**
- "What does brake bias actually do? Use my last Spa session."
- "Why would I run more rear anti-roll bar in the wet?"
- "In my GT4, what does spring perch offset change — and what does it fight with?"

> Setup Coaching requires a **Plus or Ultra** plan. The engineer tells you what
> it does **not** know as clearly as what it does: a missing concept or per-car
> note means nobody has written it yet, never that it does not matter, and
> anything added from general knowledge is labelled as such. Some values are
> read-outs on a given car rather than dials — it leads with that. Explaining
> never proposes values for you; that is a separate capability — AI Setups,
> below.
>
> Prefer to read rather than ask? The same corpus is published, free and
> sim-neutral, as the [Setup Guide](/en/setup-guide).

## AI Setups

Your private setup vault, and the engineer that changes what is in it. Explaining
a parameter is the section above; **proposing values is this one**.

> Every tool here requires a **Plus or Ultra** plan. Full product documentation:
> [AI Setups](/en/docs/ai-setups/introduction).

### The Vault

| Tool | Description |
|------|-------------|
| **listCarSetups** | List your setups as summary rows — sim, car, track, type, tags and status |
| **getCarSetup** | One setup with its full version lineage, conversation milestones and each version's parsed parameters |
| **createCarSetup** | Create a setup and its v1 from a full `.svm` file (Le Mans Ultimate only) |
| **addSetupVersion** | Append a version from another full `.svm` — for when you tweaked it in-sim and re-exported (LMU only) |

A lineage never mixes parameter channels. A `.svm` version cannot be appended to
a setup built from an iRacing `.htm`, and the engineer starts a separate setup
instead of pretending the two are comparable.

### Setup Interview

The interview is Le Mans Ultimate only and requires an existing owned `.svm`.
Protected references are internal evidence for relative movements; they are not
downloaded, named or copied into the driver's vault. Full walkthrough:
[Setup Interview](/en/docs/ai-setups/setup-interview).

| Tool | Description |
|------|-------------|
| **buildSetupFromInterview** | Derive a child from an owned LMU version using an explicit source cell and four target answers; returns only relative moves and drops |
| **listReferenceSetups** | Check internal evidence coverage for an exact car variant and cell without exposing source provenance |
| **reportReferenceMiss** | Log that you asked for a baseline we do not hold, so curation knows what to collect next — this one accepts iRacing asks too, even though we cannot serve them |

The interview requires exact source and target cells for the same verified car
variant. It never substitutes a different car or silently falls back to a
neighbouring condition or session.

### Changing a Setup

| Tool | Description |
|------|-------------|
| **remixSetup** | Derive a new version by changing individual parameters — the core AI Setups action |
| **getCarParamSpace** | Braking Lab's **observed** parameter space for a car, as a prior before proposing values |

A remix may only touch parameters your garage marks adjustable; a change to
anything else is rejected and **no version is written**. `getCarParamSpace` is
explicitly non-authoritative: uploaded files are editable, observations are
incomplete, and an unseen value can still be perfectly legal. Each row carries
how many observations back it, so a reading from one file cannot pose as a rule.

### What You Actually Drove

| Tool | Description |
|------|-------------|
| **getSetupTelemetryContext** | A bounded telemetry context for one setup and one session, checked for sim and car identity, before proposing a remix |
| **confirmSetupUsage** | Confirm that a suggested setup usage matches its captured session, or correct it to another version |
| **previewSetupAssociation** | Validate a proposed setup/session link and return a preview, without writing any evidence |
| **commitSetupAssociation** | Commit exactly that preview, after you confirm it |
| **retireSetupAssociation** | Retire a usage you no longer stand behind; history and linked evaluations are preserved |

Braking Lab asks **you** for confirmation through your MCP client immediately
before it writes an association. A boolean supplied by the agent is never accepted
as your consent, and the engineer cannot preview and commit in the same turn.

### Evidence

| Tool | Description |
|------|-------------|
| **recordSetupEvaluation** | Append your subjective verdict for one confirmed usage — the primary thumb, plus an optional relative comparison against another run of the same setup |
| **getSetupExperimentHistory** | Your experiment history for one setup: version provenance, confirmed usages, active evaluations and telemetry outcomes |
| **compareSetupUsages** | Compare two confirmed usages from captured telemetry — pace, consistency, sample sizes, conditions, confounders and evidence strength |

The comparison reports test minus baseline and stops there. It does not declare a
winner, because two runs do not establish causality — see
[Setups and your sessions](/en/docs/ai-setups/sessions).

**Example prompts:**
- "Build me a wet race setup for the Ferrari 296 LMGT3 at Spa."
- "Take my Monza qualifying setup and calm the entry down a click."
- "Which of my two Bahrain runs was actually better, and by how much?"

## Leaderboard

Public performance rankings.

| Tool | Description |
|------|-------------|
| **getDesktopLeaderboard** | Public leaderboard of uploaded sessions ranked by lap time — each entry carries a lap ID you can feed into `compareTraces` to duel that lap |

## Help & Documentation

Self-service information.

| Tool | Description |
|------|-------------|
| **whoami** | Which driver the engineer is connected to, their plan, and how many AI reports are left this month |
| **getCapabilities** | Structured overview of everything the Race Engineer can do |
| **getDocumentation** | App feature documentation with links |
| **getFunctionSchema** | Introspect the full JSON Schema for any function before calling it |

## Next Steps

- [Examples](/en/docs/race-engineer/examples) — See worked example conversations end to end
- [Coaching](/en/docs/race-engineer/coaching) — Learn how to get the best coaching analysis
- [Race Preparation](/en/docs/race-engineer/preparation) — Use the engineer to prepare for races
