{"ok":true,"site":{"host":"cantraceviewer.com","url":"https://cantraceviewer.com/","type":"live","desc":"Plot ASC, TRC, BLF, or MF4 vehicle data in your browser. Decode raw CAN with DBC files or plot native MF4 channels; files stay on your device.","tools":[{"name":"describe_session","kind":"answer","impl":"imperative","description":"Summarise loaded files, selected signals and their axes, decode states, visible ranges, crosshairs and legend readout. Use screenshots to inspect the plot shape.","title":"Describe analysis session","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"search_signals","kind":"answer","impl":"imperative","description":"Search the loaded DBC and MF4-native signal catalogues. Results contain stable keys for later tool calls.","title":"Search signals","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Signal, message, or CAN identifier text."},"limit":{"type":"integer","minimum":1,"maximum":50,"default":25}},"required":["query"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"set_signal_selection","kind":"act","impl":"imperative","description":"Select or deselect signals by stable key or exact label. Selection decodes signals for plotting and inspection.","title":"Set signal selection","annotations":{"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"signals":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":50},"selected":{"type":"boolean"}},"required":["signals","selected"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"set_time_window","kind":"act","impl":"imperative","description":"Set the visible plot time window in trace-relative milliseconds, clamped to the plot domain, preserving Y zoom. Omit both bounds to reset all axes to their full extent.","title":"Set time window","inputSchema":{"type":"object","properties":{"startMs":{"type":"number"},"endMs":{"type":"number"}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"inspect_at_times","kind":"answer","impl":"imperative","description":"Read nearest decoded samples, units, enum labels and deltas without moving the plot. Omit timesMs to read current crosshairs in C1/C2 order. Sample timestamps and distances show sampling uncertainty; nearest samples are not interpolated or necessarily simultaneous.","title":"Inspect signal values at times","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"timesMs":{"type":"array","items":{"type":"number"},"minItems":1,"maxItems":20},"signals":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":20,"description":"Stable keys or exact labels. Omit to inspect plotted signals."}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"set_crosshairs","kind":"act","impl":"imperative","description":"Replace the plot crosshairs; use an empty array to clear them. Times are trace-relative milliseconds, clamped to the full plot domain. Optional value is the horizontal marker in primary Y-axis units; omitted values keep that marker's height or use the viewport centre. The time window stays unchanged.","title":"Set crosshairs","inputSchema":{"type":"object","properties":{"crosshairs":{"type":"array","maxItems":2,"items":{"type":"object","properties":{"id":{"type":"integer","enum":[1,2]},"timeMs":{"type":"number"},"value":{"type":"number"}},"required":["id","timeMs"],"additionalProperties":false}},"readout":{"type":"string","enum":["c1","c2","delta"],"description":"Legend readout. Delta requires both markers."}},"required":["crosshairs"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"set_signal_axes","kind":"act","impl":"imperative","description":"Assign selected signals to axis numbers Y1–Y5 in legend order, creating axes as needed. Existing signals keep their assignments unless listed. Axes refit using the same behaviour as the legend move menu; existing Y zoom is retained.","title":"Set signal axes","annotations":{"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"assignments":{"type":"array","minItems":1,"maxItems":50,"items":{"type":"object","properties":{"signal":{"type":"string"},"axis":{"type":"integer","minimum":1,"maximum":5}},"required":["signal","axis"],"additionalProperties":false}}},"required":["assignments"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Developer Tools","favicon":"/favicons/cantraceviewer.com.png","apiSurface":"spec","toolCount":7}}