Tool tree
gradeNot graded
get_circuitAnswer
Read the live circuit as the designer sees it: motorsport and vehicle model, origin (reference, custom seed or original), every turn with position (metres, +x east, +y south), radius, sector, apex/entry speed, braking drop, approach, overtaking score and lock state, sector summaries, scores, warnings, brief status, latest simulation, design inspirations and the Reference Library. The lap runs Turn 1 → N from start/finish. Call it first and again after the human edits something.
View tool JSON
{
"name": "get_circuit",
"kind": "answer",
"impl": "imperative",
"description": "Read the live circuit as the designer sees it: motorsport and vehicle model, origin (reference, custom seed or original), every turn with position (metres, +x east, +y south), radius, sector, apex/entry speed, braking drop, approach, overtaking score and lock state, sector summaries, scores, warnings, brief status, latest simulation, design inspirations and the Reference Library. The lap runs Turn 1 → N from start/finish. Call it first and again after the human edits something.",
"inputSchema": {
"type": "object",
"properties": {}
}
}analyze_circuitAction
Deterministic design analysis with explanations: how each score is built, the strong overtaking opportunities and the best candidates to become one, sector character, geometry warnings, each brief constraint's PASS / NEAR LIMIT / FAIL, the latest simulation's full findings and per-turn signals, and each design inspiration's traits and effect. Use it to decide what to change and to verify a change achieved the goal.
View tool JSON
{
"name": "analyze_circuit",
"kind": "act",
"impl": "imperative",
"description": "Deterministic design analysis with explanations: how each score is built, the strong overtaking opportunities and the best candidates to become one, sector character, geometry warnings, each brief constraint's PASS / NEAR LIMIT / FAIL, the latest simulation's full findings and per-turn signals, and each design inspiration's traits and effect. Use it to decide what to change and to verify a change achieved the goal.",
"inputSchema": {
"type": "object",
"properties": {}
}
}apply_design_moveAction
Apply one motorsport design move to a turn. Moves: tighten_turn (smaller radius, slower apex), open_turn (larger radius, faster), create_overtaking_zone (turn becomes a heavy braking zone with a long approach — the classic overtaking spot), add_chicane_after / add_esses_after / add_hairpin_after (insert new turns on the straight after this turn), remove_turn (delete, straightening the track). Respects locked turns. Returns a receipt and the new circuit state.
View tool JSON
{
"name": "apply_design_move",
"kind": "act",
"impl": "imperative",
"description": "Apply one motorsport design move to a turn. Moves: tighten_turn (smaller radius, slower apex), open_turn (larger radius, faster), create_overtaking_zone (turn becomes a heavy braking zone with a long approach — the classic overtaking spot), add_chicane_after / add_esses_after / add_hairpin_after (insert new turns on the straight after this turn), remove_turn (delete, straightening the track). Respects locked turns. Returns a receipt and the new circuit state.",
"inputSchema": {
"type": "object",
"properties": {
"move": {
"type": "string",
"enum": [
"tighten_turn",
"open_turn",
"create_overtaking_zone",
"add_chicane_after",
"add_esses_after",
"add_hairpin_after",
"remove_turn"
]
},
"turn": {
"type": "integer",
"description": "Turn number (1-based)."
},
"intensity": {
"type": "string",
"enum": [
"subtle",
"moderate",
"strong"
],
"description": "How far to push the change. Default moderate."
},
"reason": {
"type": "string",
"description": "One short sentence shown to the designer, e.g. 'Braking zone for overtaking into Turn 3'."
}
},
"required": [
"move",
"turn"
]
}
}reshape_sectorAction
Reshape a whole sector, respecting locked turns. Give either an intent — faster (open radii, remove kinks at strong), more_technical (tighten radii and insert a chicane on the sector's longest straight; esses too at strong), more_overtaking (turn the best candidate into a heavy braking zone) — or a design inspiration (high-speed, street-technical, flowing-technical), which applies that archetype's whole set of characteristics to the sector. The tool decides the geometry; you decide the intent.
View tool JSON
{
"name": "reshape_sector",
"kind": "act",
"impl": "imperative",
"description": "Reshape a whole sector, respecting locked turns. Give either an intent — faster (open radii, remove kinks at strong), more_technical (tighten radii and insert a chicane on the sector's longest straight; esses too at strong), more_overtaking (turn the best candidate into a heavy braking zone) — or a design inspiration (high-speed, street-technical, flowing-technical), which applies that archetype's whole set of characteristics to the sector. The tool decides the geometry; you decide the intent.",
"inputSchema": {
"type": "object",
"properties": {
"sector": {
"type": "integer",
"enum": [
1,
2,
3
]
},
"intent": {
"type": "string",
"enum": [
"faster",
"more_technical",
"more_overtaking"
],
"description": "Single-axis change. Omit when giving an inspiration."
},
"inspiration": {
"type": "string",
"enum": [
"high-speed",
"street-technical",
"flowing-technical"
],
"description": "Design inspiration to apply to the sector (takes precedence over intent). Phrases like 'Monza-style' resolve to the matching id."
},
"intensity": {
"type": "string",
"enum": [
"subtle",
"moderate",
"strong"
],
"description": "How far to push the change. Default moderate."
},
"reason": {
"type": "string",
"description": "One short sentence shown to the designer."
}
},
"required": [
"sector"
]
}
}apply_design_inspirationAction
Apply a design inspiration to the whole circuit or one sector, designing around locked turns. high-speed: open radii, drop shallow kinks, make the corner after the longest approach a heavy braking zone. street-technical: tighten radii and insert a tight chicane on the longest straight. flowing-technical: pull radii into a 70–140 m rhythm band and insert linked esses. The start/finish straight is kept. Returns a receipt and the new state.
View tool JSON
{
"name": "apply_design_inspiration",
"kind": "act",
"impl": "imperative",
"description": "Apply a design inspiration to the whole circuit or one sector, designing around locked turns. high-speed: open radii, drop shallow kinks, make the corner after the longest approach a heavy braking zone. street-technical: tighten radii and insert a tight chicane on the longest straight. flowing-technical: pull radii into a 70–140 m rhythm band and insert linked esses. The start/finish straight is kept. Returns a receipt and the new state.",
"inputSchema": {
"type": "object",
"properties": {
"inspiration": {
"type": "string",
"enum": [
"high-speed",
"street-technical",
"flowing-technical"
],
"description": "Design inspiration to apply: a set of characteristics, never a real-world layout. Phrases like 'Monza-style' resolve to the matching id."
},
"sector": {
"type": "integer",
"enum": [
1,
2,
3
],
"description": "Limit the change to one sector. Omit for the whole circuit."
},
"intensity": {
"type": "string",
"enum": [
"subtle",
"moderate",
"strong"
],
"description": "How far to push the change. Default moderate."
},
"reason": {
"type": "string",
"description": "One short sentence shown to the designer, e.g. 'High-speed character for Sector 2'."
}
},
"required": [
"inspiration"
]
}
}edit_turnsAction
Precisely edit one or more turns: position (metres), corner radius (metres, ≥8) or name. Fails for locked turns. Use for fine placement after design moves, or to shorten/lengthen straights by moving turns.
View tool JSON
{
"name": "edit_turns",
"kind": "act",
"impl": "imperative",
"description": "Precisely edit one or more turns: position (metres), corner radius (metres, ≥8) or name. Fails for locked turns. Use for fine placement after design moves, or to shorten/lengthen straights by moving turns.",
"inputSchema": {
"type": "object",
"properties": {
"edits": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"turn": {
"type": "integer"
},
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"radius": {
"type": "number",
"description": "Corner radius in metres"
},
"name": {
"type": "string"
}
},
"required": [
"turn"
]
}
},
"reason": {
"type": "string"
}
},
"required": [
"edits"
]
}
}set_turn_locksAction
Lock or unlock turns. Locked turns are protected design decisions: no tool may move, resize or delete them. Use when the designer asks to keep a turn exactly as it is.
View tool JSON
{
"name": "set_turn_locks",
"kind": "act",
"impl": "imperative",
"description": "Lock or unlock turns. Locked turns are protected design decisions: no tool may move, resize or delete them. Use when the designer asks to keep a turn exactly as it is.",
"inputSchema": {
"type": "object",
"properties": {
"turns": {
"type": "array",
"items": {
"type": "integer"
},
"minItems": 1
},
"locked": {
"type": "boolean"
}
},
"required": [
"turns",
"locked"
]
}
}load_reference_circuitAction
Replace the live circuit with a layout from the Reference Library (Formula 1: monza, monaco, suzuka; Formula E: monaco-fe, berlin-tempelhof, tokyo; MotoGP: mugello, assen, phillip-island; silver-fields is the NotASprint original). Sets the motorsport to the reference's series and clears undo history; saved snapshots stay. get_circuit lists each reference's location and character.
View tool JSON
{
"name": "load_reference_circuit",
"kind": "act",
"impl": "imperative",
"description": "Replace the live circuit with a layout from the Reference Library (Formula 1: monza, monaco, suzuka; Formula E: monaco-fe, berlin-tempelhof, tokyo; MotoGP: mugello, assen, phillip-island; silver-fields is the NotASprint original). Sets the motorsport to the reference's series and clears undo history; saved snapshots stay. get_circuit lists each reference's location and character.",
"inputSchema": {
"type": "object",
"properties": {
"circuit_id": {
"type": "string",
"enum": [
"silver-fields",
"monza",
"monaco",
"suzuka",
"monaco-fe",
"berlin-tempelhof",
"tokyo",
"mugello",
"assen",
"phillip-island"
],
"description": "Reference id from the Reference Library."
}
},
"required": [
"circuit_id"
]
}
}create_custom_circuitAction
Generate a fresh circuit concept for a motorsport and make it the live circuit. Formula 1: larger scale, long straights into heavy braking. Formula E: compact, technical, stop-start. MotoGP: flowing wide arcs and sustained corner sequences. Each seed gives a different layout; the same seed reproduces one. Clears undo history; saved snapshots stay.
View tool JSON
{
"name": "create_custom_circuit",
"kind": "act",
"impl": "imperative",
"description": "Generate a fresh circuit concept for a motorsport and make it the live circuit. Formula 1: larger scale, long straights into heavy braking. Formula E: compact, technical, stop-start. MotoGP: flowing wide arcs and sustained corner sequences. Each seed gives a different layout; the same seed reproduces one. Clears undo history; saved snapshots stay.",
"inputSchema": {
"type": "object",
"properties": {
"motorsport": {
"type": "string",
"enum": [
"f1",
"fe",
"motogp"
],
"description": "f1, fe or motogp. Phrases like 'Formula E' or 'bikes' also resolve."
},
"seed": {
"type": "integer",
"description": "Omit for a new concept; repeat a seed to get the same layout again."
}
},
"required": [
"motorsport"
]
}
}undo_changesAction
Undo the last N changes (yours or the designer's).
View tool JSON
{
"name": "undo_changes",
"kind": "act",
"impl": "imperative",
"description": "Undo the last N changes (yours or the designer's).",
"inputSchema": {
"type": "object",
"properties": {
"steps": {
"type": "integer",
"minimum": 1,
"default": 1
}
}
}
}run_simulationAction
Run a hypothetical race-flow simulation on the live circuit and store it as the latest run: per-turn arrivals, held-up vehicles, passes, simulated contacts and closing speeds; sector notes; ranked findings (bunching, packed trains, contact-prone corners, speed-differential braking zones, paper-only overtaking zones); before/after against the previous run. Deterministic for a seed. A point-mass signal for comparing design changes, not a real-world or safety prediction.
View tool JSON
{
"name": "run_simulation",
"kind": "act",
"impl": "imperative",
"description": "Run a hypothetical race-flow simulation on the live circuit and store it as the latest run: per-turn arrivals, held-up vehicles, passes, simulated contacts and closing speeds; sector notes; ranked findings (bunching, packed trains, contact-prone corners, speed-differential braking zones, paper-only overtaking zones); before/after against the previous run. Deterministic for a seed. A point-mass signal for comparing design changes, not a real-world or safety prediction.",
"inputSchema": {
"type": "object",
"properties": {
"cars": {
"type": "integer",
"minimum": 2,
"maximum": 24,
"description": "Default 12."
},
"laps": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"description": "Default 5."
},
"variance": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Driver skill and lap-to-lap spread. Default 0.5."
},
"aggression": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Willingness to attempt marginal passes. Default 0.5."
},
"seed": {
"type": "integer",
"description": "Keep the same seed to compare a redesign against the previous run."
}
}
}
}set_design_briefAction
Set, change or clear the design brief: measurable constraints evaluated continuously against the live circuit and returned with every write (PASS / NEAR LIMIT / FAIL). Pass a field to set it, null to remove that constraint, clear:true to remove all. preserve_turns lists turns that must stay locked; it does not lock them — the designer or set_turn_locks does.
View tool JSON
{
"name": "set_design_brief",
"kind": "act",
"impl": "imperative",
"description": "Set, change or clear the design brief: measurable constraints evaluated continuously against the live circuit and returned with every write (PASS / NEAR LIMIT / FAIL). Pass a field to set it, null to remove that constraint, clear:true to remove all. preserve_turns lists turns that must stay locked; it does not lock them — the designer or set_turn_locks does.",
"inputSchema": {
"type": "object",
"properties": {
"min_length_m": {
"type": [
"number",
"null"
]
},
"max_length_m": {
"type": [
"number",
"null"
]
},
"max_turns": {
"type": [
"integer",
"null"
],
"description": "Real corners; kinks are not counted."
},
"min_overtaking_zones": {
"type": [
"integer",
"null"
],
"description": "Turns with overtaking score ≥ 70."
},
"min_straight_m": {
"type": [
"number",
"null"
],
"description": "Longest straight."
},
"profile": {
"type": [
"string",
"null"
],
"enum": [
"high-speed",
"street-technical",
"flowing-technical",
null
],
"description": "Target design inspiration; checked against its score bands."
},
"preserve_turns": {
"type": [
"array",
"null"
],
"items": {
"type": "integer"
},
"description": "Turn numbers (current numbering) that must stay locked."
},
"clear": {
"type": "boolean"
}
}
}
}design_versionsAction
Named design milestones, separate from undo. list: all versions with their metrics. save: snapshot the current circuit, analysis, brief and latest simulation under a name. restore: make a version the live circuit (undoable). compare: design metrics, sector character, brief status and simulation totals of a version against the current design (default) or another version; the comparison is also shown to the designer as an overlay.
View tool JSON
{
"name": "design_versions",
"kind": "act",
"impl": "imperative",
"description": "Named design milestones, separate from undo. list: all versions with their metrics. save: snapshot the current circuit, analysis, brief and latest simulation under a name. restore: make a version the live circuit (undoable). compare: design metrics, sector character, brief status and simulation totals of a version against the current design (default) or another version; the comparison is also shown to the designer as an overlay.",
"inputSchema": {
"type": "object",
"properties": {
"action": {
"type": "string",
"enum": [
"list",
"save",
"restore",
"compare"
]
},
"name": {
"type": "string",
"description": "save: milestone name, e.g. 'Simulation optimised'."
},
"version_id": {
"type": "string",
"description": "restore / compare: e.g. 'v2'."
},
"compare_to": {
"type": "string",
"description": "compare: another version id; default 'current'."
}
},
"required": [
"action"
]
}
}export_circuitAction
Export the current circuit and save a file to the designer's device. json: definition plus analysis (also returned inline). svg / png / png-transparent: a drawing in one of four styles — technical (grid, turn numbers, sectors, braking zones), presentation (name and headline metrics), minimal (circuit only), analysis (presentation plus scores, sectors and overtaking zones). Does not change the circuit.
View tool JSON
{
"name": "export_circuit",
"kind": "act",
"impl": "imperative",
"description": "Export the current circuit and save a file to the designer's device. json: definition plus analysis (also returned inline). svg / png / png-transparent: a drawing in one of four styles — technical (grid, turn numbers, sectors, braking zones), presentation (name and headline metrics), minimal (circuit only), analysis (presentation plus scores, sectors and overtaking zones). Does not change the circuit.",
"inputSchema": {
"type": "object",
"properties": {
"format": {
"type": "string",
"enum": [
"svg",
"png",
"png-transparent",
"json"
],
"default": "json"
},
"style": {
"type": "string",
"enum": [
"technical",
"presentation",
"minimal",
"analysis"
],
"default": "technical"
}
}
}
}