{"ok":true,"site":{"host":"notasprint.vercel.app","url":"https://notasprint.vercel.app/","type":"live","desc":"Design racing circuits for Formula 1, Formula E and MotoGP together with an AI agent in the same live workspace. WebMCP-native.","tools":[{"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.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","annotations":{"readOnlyHint":false},"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"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","annotations":{"readOnlyHint":false},"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"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","annotations":{"readOnlyHint":false},"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"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","annotations":{"readOnlyHint":false},"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"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"turns":{"type":"array","items":{"type":"integer"},"minItems":1},"locked":{"type":"boolean"}},"required":["turns","locked"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","annotations":{"readOnlyHint":false},"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"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","annotations":{"readOnlyHint":false},"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"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"undo_changes","kind":"act","impl":"imperative","description":"Undo the last N changes (yours or the designer's).","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"steps":{"type":"integer","minimum":1,"default":1}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","annotations":{"readOnlyHint":false},"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."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","annotations":{"readOnlyHint":false},"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"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","annotations":{"readOnlyHint":false},"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"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","annotations":{"readOnlyHint":false},"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"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Media & Personal","favicon":"/favicons/notasprint.vercel.app.svg","apiSurface":"spec","toolCount":14}}