{"ok":true,"site":{"host":"breidenbach0.github.io","url":"https://breidenbach0.github.io/empeirik/","type":"live","desc":"A browser agent workspace for circuit diagnosis and circuit building with CircuitJS1.","tools":[{"name":"get_workspace","kind":"answer","impl":"imperative","description":"Read the active circuit session, CircuitJS1 connection, circuit summary, measurements, saved versions, and visible work log. Use this first.","title":"Read circuit workspace","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"start_session","kind":"act","impl":"imperative","description":"Start a circuit session using the user's goal. The same workspace supports building, inspection, simulation, and diagnosis. Optionally load a complete CircuitJS export supplied by the user. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.","title":"Start circuit session","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"goal":{"type":"string","description":"What should be built, inspected, or diagnosed"},"title":{"type":"string"},"circuitName":{"type":"string"},"circuitText":{"type":"string","description":"Optional complete CircuitJS legacy '$' or XML '<cir>' export"},"basedOnRevision":{"type":"integer"}},"required":["goal"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"inspect_circuit","kind":"answer","impl":"imperative","description":"Read the current CircuitJS export and a plain list of live elements, including labels and available electrical values. Use this before reasoning about or editing the circuit. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.","title":"Inspect CircuitJS1 circuit","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"basedOnRevision":{"type":"integer"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"load_circuit","kind":"act","impl":"imperative","description":"Load a complete CircuitJS export into the visible simulator. The current circuit is saved as a restorable version by default. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.","title":"Load circuit in CircuitJS1","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"circuitText":{"type":"string","description":"Complete CircuitJS legacy '$' or XML '<cir>' export"},"circuitName":{"type":"string"},"summary":{"type":"string","description":"What was created or changed"},"preserveCurrent":{"type":"boolean","default":true},"basedOnRevision":{"type":"integer"}},"required":["circuitText","summary"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"restore_circuit_version","kind":"act","impl":"imperative","description":"Restore a circuit version listed by get_workspace. The circuit being replaced is saved first, so this is reversible. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.","title":"Restore circuit version","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"versionId":{"type":"string","description":"Saved version id, for example v1"},"basedOnRevision":{"type":"integer"}},"required":["versionId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"measure_node","kind":"act","impl":"imperative","description":"Use the CircuitJS1 bridge to read the voltage of a labeled node in the active simulation. Record user-reported physical readings with record_evidence instead. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.","title":"Measure labeled node","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"node":{"type":"string","description":"Exact CircuitJS labeled-node name"},"reason":{"type":"string","description":"Why this reading matters"},"basedOnRevision":{"type":"integer"}},"required":["node","reason"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"set_simulation_running","kind":"act","impl":"imperative","description":"Start or pause the active CircuitJS1 simulation and record why. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.","title":"Start or pause simulation","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"running":{"type":"boolean"},"reason":{"type":"string"},"basedOnRevision":{"type":"integer"}},"required":["running"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"record_note","kind":"act","impl":"imperative","description":"Put a concrete finding, decision, question, or next step in the visible session feed. Use this to explain reasoning without creating a separate abstract state screen. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.","title":"Record session note","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"kind":{"type":"string","enum":["finding","decision","question","next-step"]},"title":{"type":"string"},"detail":{"type":"string"},"basedOnRevision":{"type":"integer"}},"required":["kind","title","detail"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"finish_session","kind":"act","impl":"imperative","description":"Finish or pause the current session with a concrete result and a clear simulation-versus-hardware boundary. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.","title":"Finish circuit session","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"outcome":{"type":"string","enum":["resolved","needs-hardware-test","blocked"]},"summary":{"type":"string"},"basedOnRevision":{"type":"integer"}},"required":["outcome","summary"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"get_circuit_capabilities","kind":"answer","impl":"imperative","description":"Read the native editor bridge version, every CircuitJS1 element type available in this build, menu command groups, option names, UI controls, scope properties, and browser-gesture limitations. Use this before an unfamiliar edit.","title":"Discover CircuitJS1 controls","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"get_circuit_editor_state","kind":"answer","impl":"imperative","description":"Read the live native CircuitJS1 editor state: every element with position, properties and controls; global properties; options; view; scopes; run state; and undo/redo availability. Set includeCircuitText only when the raw CircuitJS export is needed.","title":"Read complete CircuitJS1 editor state","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"includeCircuitText":{"type":"boolean","default":false}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"add_circuit_element","kind":"act","impl":"imperative","description":"Place any element type returned by get_circuit_capabilities directly on the CircuitJS1 grid. Returns the element index and its editable fields. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.","title":"Place CircuitJS1 element","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"type":{"type":"string","description":"CircuitJS class name or displayed element label"},"x1":{"type":"integer"},"y1":{"type":"integer"},"x2":{"type":"integer"},"y2":{"type":"integer"},"summary":{"type":"string"},"basedOnRevision":{"type":"integer"}},"required":["type","x1","y1","x2","y2","summary"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"edit_circuit_element","kind":"act","impl":"imperative","description":"Set any generic CircuitJS1 element Edit dialog field by fieldIndex. Read the element's editFields first; numeric values use SI units, choices accept an index or label, booleans accept true/false, and action fields accept 'press'. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.","title":"Edit CircuitJS1 element property","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"elementIndex":{"type":"integer","minimum":0},"fieldIndex":{"type":"integer","minimum":0},"value":{"description":"Number, boolean, string, choice index/label, or 'press'"},"summary":{"type":"string"},"basedOnRevision":{"type":"integer"}},"required":["elementIndex","fieldIndex","value","summary"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"move_circuit_element","kind":"act","impl":"imperative","description":"Set both endpoints of an existing CircuitJS1 element; coordinates snap to the active grid. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.","title":"Move CircuitJS1 element","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"elementIndex":{"type":"integer","minimum":0},"x1":{"type":"integer"},"y1":{"type":"integer"},"x2":{"type":"integer"},"y2":{"type":"integer"},"summary":{"type":"string"},"basedOnRevision":{"type":"integer"}},"required":["elementIndex","x1","y1","x2","y2","summary"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"remove_circuit_elements","kind":"act","impl":"imperative","description":"Remove one or more live CircuitJS1 elements by index. The native CircuitJS1 undo stack can restore the edit. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.","title":"Remove CircuitJS1 elements","annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"elementIndices":{"type":"array","minItems":1,"items":{"type":"integer","minimum":0}},"summary":{"type":"string"},"basedOnRevision":{"type":"integer"}},"required":["elementIndices","summary"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"split_circuit_wire","kind":"act","impl":"imperative","description":"Split a WireElm or RoutedWireElm at a chosen circuit-grid point, exactly like the wire context-menu action but without depending on mouse position. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.","title":"Split CircuitJS1 wire","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"elementIndex":{"type":"integer","minimum":0},"x":{"type":"integer"},"y":{"type":"integer"},"summary":{"type":"string"},"basedOnRevision":{"type":"integer"}},"required":["elementIndex","x","y","summary"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"select_circuit_elements","kind":"act","impl":"imperative","description":"Replace, add, remove, or toggle the current CircuitJS1 selection. This lets the next rotate, mirror, cut, copy, or duplicate command operate on exactly the intended elements. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.","title":"Select CircuitJS1 elements","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"elementIndices":{"type":"array","items":{"type":"integer","minimum":0}},"mode":{"type":"string","enum":["replace","add","remove","toggle"],"default":"replace"},"summary":{"type":"string"},"basedOnRevision":{"type":"integer"}},"required":["elementIndices","summary"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"set_circuit_element_control","kind":"act","impl":"imperative","description":"Set a live element control returned in the element's controls array, such as switch-position, a built-in slider, or an adjustable property slider. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.","title":"Operate CircuitJS1 switch or slider","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"elementIndex":{"type":"integer","minimum":0},"controlId":{"type":"string"},"value":{"type":"number"},"summary":{"type":"string"},"basedOnRevision":{"type":"integer"}},"required":["elementIndex","controlId","value","summary"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"execute_circuit_command","kind":"act","impl":"imperative","description":"Execute a real CircuitJS1 command from the File, Edit, Scopes, element, scope, Tools, zoom, or view command groups. Targeted commands accept an elementIndex and/or scopeIndex plus plotIndex. Browser file pickers, clipboard writes, downloads, printing, and fullscreen may require a user gesture; use load_circuit or inspect APIs for non-dialog alternatives. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.","title":"Execute CircuitJS1 menu command","annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"menu":{"type":"string"},"item":{"type":"string"},"elementIndex":{"type":"integer","minimum":0},"scopeIndex":{"type":"integer","minimum":0},"plotIndex":{"type":"integer","minimum":0},"summary":{"type":"string"},"basedOnRevision":{"type":"integer"}},"required":["menu","item","summary"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"configure_circuit_adjustable","kind":"act","impl":"imperative","description":"Create, update, or remove the adjustable property sliders available from an element's Add Sliders dialog. For create, provide elementIndex, fieldIndex, min, and max. For update/remove, provide adjustableIndex from the element controls. An update can share another primary slider with sharedAdjustableIndex or detach with ownSlider. Step defaults to continuous (0); logarithmic ranges require a positive minimum. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.","title":"Configure CircuitJS1 adjustable slider","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["create","update","remove"]},"elementIndex":{"type":"integer","minimum":0},"fieldIndex":{"type":"integer","minimum":0},"adjustableIndex":{"type":"integer","minimum":0},"label":{"type":"string"},"min":{"type":"number"},"max":{"type":"number"},"step":{"type":"number","minimum":0,"default":0},"logarithmic":{"type":"boolean","default":false},"sharedAdjustableIndex":{"type":"integer","minimum":0},"ownSlider":{"type":"boolean","default":false},"summary":{"type":"string"},"basedOnRevision":{"type":"integer"}},"required":["action","summary"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"set_circuit_option","kind":"act","impl":"imperative","description":"Set any boolean CircuitJS1 display/editor option listed by get_circuit_capabilities, including current/voltage/power display, values, grid, toolbar, crosshair, resistor/gate style, background, current direction, editing lock, and mouse-wheel editing. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.","title":"Set CircuitJS1 option","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"boolean"},"summary":{"type":"string"},"basedOnRevision":{"type":"integer"}},"required":["name","value","summary"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"set_circuit_ui_control","kind":"act","impl":"imperative","description":"Set simulationSpeed, currentSpeed, or powerBrightness to the same raw scrollbar value used by the CircuitJS1 UI. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.","title":"Set CircuitJS1 simulation control","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"name":{"type":"string","enum":["simulationSpeed","currentSpeed","powerBrightness"]},"value":{"type":"integer"},"summary":{"type":"string"},"basedOnRevision":{"type":"integer"}},"required":["name","value","summary"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"set_circuit_view","kind":"act","impl":"imperative","description":"Set CircuitJS1 canvas scale and translation directly. Scale must be between 0.2 and 2.5. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.","title":"Set CircuitJS1 pan and zoom","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"scale":{"type":"number","minimum":0.2,"maximum":2.5},"translateX":{"type":"number"},"translateY":{"type":"number"},"summary":{"type":"string"},"basedOnRevision":{"type":"integer"}},"required":["scale","translateX","translateY","summary"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"set_circuit_scope_property","kind":"act","impl":"imperative","description":"Set any native scope property listed by get_circuit_capabilities, including label, speed, position, scale, plot position, divisions, trigger, persistence, AC coupling, traces, spectrum, transistor traces, and XY plots. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.","title":"Configure CircuitJS1 scope","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"scopeIndex":{"type":"integer","minimum":0},"property":{"type":"string"},"value":{"description":"Property value; booleans, numbers, and strings are accepted"},"plotIndex":{"type":"integer","minimum":0},"summary":{"type":"string"},"basedOnRevision":{"type":"integer"}},"required":["scopeIndex","property","value","summary"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"set_global_circuit_property","kind":"act","impl":"imperative","description":"Set any field from globalEditFields in get_circuit_editor_state, equivalent to CircuitJS1's Other Options dialog. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.","title":"Edit global CircuitJS1 property","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"fieldIndex":{"type":"integer","minimum":0},"value":{"description":"Field value"},"summary":{"type":"string"},"basedOnRevision":{"type":"integer"}},"required":["fieldIndex","value","summary"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"apply_circuit_actions","kind":"act","impl":"imperative","description":"Apply up to 100 native CircuitJS1 actions as one WebMCP operation. This is the fastest way to build or revise a circuit. Supported op values are add, move, split-wire, edit, global-edit, element-control, create-adjustable, update-adjustable, remove-adjustable, remove, select, command, option, ui-control, view, scope, reset-simulation, and run. Add and split-wire actions may assign a ref; later actions in the same batch may use elementRef, targetRef, or elementRefs. The complete batch is one native CircuitJS1 Undo step; if any action fails, its circuit, run state, and undo history are restored. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.","title":"Apply atomic CircuitJS1 action batch","annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"actions":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","properties":{"op":{"type":"string","enum":["add","move","split-wire","edit","global-edit","element-control","create-adjustable","update-adjustable","remove-adjustable","remove","select","command","option","ui-control","view","scope","reset-simulation","run"]},"ref":{"type":"string"},"elementRef":{"type":"string"},"targetRef":{"type":"string"},"elementRefs":{"type":"array","items":{"type":"string"}},"elementIndex":{"type":"integer","minimum":0},"targetIndex":{"type":"integer","minimum":0},"elementIndices":{"type":"array","items":{"type":"integer","minimum":0}},"type":{"type":"string"},"x1":{"type":"integer"},"y1":{"type":"integer"},"x2":{"type":"integer"},"y2":{"type":"integer"},"x":{"type":"integer"},"y":{"type":"integer"},"fieldIndex":{"type":"integer","minimum":0},"value":{},"controlId":{"type":"string"},"adjustableIndex":{"type":"integer","minimum":0},"label":{"type":"string"},"min":{"type":"number"},"max":{"type":"number"},"step":{"type":"number","minimum":0},"logarithmic":{"type":"boolean"},"sharedAdjustableIndex":{"type":"integer","minimum":0},"ownSlider":{"type":"boolean"},"mode":{"type":"string"},"menu":{"type":"string"},"item":{"type":"string"},"name":{"type":"string"},"scopeIndex":{"type":"integer","minimum":0},"plotIndex":{"type":"integer","minimum":0},"property":{"type":"string"},"scale":{"type":"number"},"translateX":{"type":"number"},"translateY":{"type":"number"},"running":{"type":"boolean"}},"required":["op"]}},"summary":{"type":"string"},"basedOnRevision":{"type":"integer"}},"required":["actions","summary"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"undo_circuit_edit","kind":"act","impl":"imperative","description":"Execute CircuitJS1's native Undo command. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.","title":"Undo CircuitJS1 edit","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"reason":{"type":"string"},"basedOnRevision":{"type":"integer"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"redo_circuit_edit","kind":"act","impl":"imperative","description":"Execute CircuitJS1's native Redo command. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.","title":"Redo CircuitJS1 edit","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"reason":{"type":"string"},"basedOnRevision":{"type":"integer"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"reset_circuit_simulation","kind":"act","impl":"imperative","description":"Reset simulation time and transient state without replacing the circuit. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.","title":"Reset CircuitJS1 simulation","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"reason":{"type":"string"},"basedOnRevision":{"type":"integer"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"record_investigation","kind":"act","impl":"imperative","description":"Record what is being inspected, traced, questioned, or checked next. The item appears in Investigation and the Work log. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.","title":"Record investigation step","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"kind":{"type":"string","enum":["inspection","trace","question","next-step"]},"title":{"type":"string"},"detail":{"type":"string"},"subject":{"type":"string"},"basedOnRevision":{"type":"integer"}},"required":["kind","title","detail"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"record_evidence","kind":"act","impl":"imperative","description":"Record a concrete observation from simulation, hardware, the user, documentation, or a calculation. Returns an evidence ID for hypotheses and repairs. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.","title":"Record diagnostic evidence","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"title":{"type":"string"},"detail":{"type":"string"},"source":{"type":"string","enum":["simulation","hardware","user","documentation","calculation"]},"value":{},"unit":{"type":"string"},"subject":{"type":"string"},"basedOnRevision":{"type":"integer"}},"required":["title","detail","source"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"propose_hypothesis","kind":"act","impl":"imperative","description":"Propose a provisional explanation linked to existing evidence IDs and keep plausible alternatives visible. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.","title":"Propose diagnostic hypothesis","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"statement":{"type":"string"},"evidenceIds":{"type":"array","minItems":1,"items":{"type":"string"}},"alternatives":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"label":{"type":"string"},"status":{"type":"string"}},"required":["label"]}]}},"note":{"type":"string"},"basedOnRevision":{"type":"integer"}},"required":["statement","evidenceIds"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"update_hypothesis","kind":"act","impl":"imperative","description":"Refine, support, reject, or annotate an existing hypothesis as evidence changes. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.","title":"Update diagnostic hypothesis","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"hypothesisId":{"type":"string"},"statement":{"type":"string"},"status":{"type":"string","enum":["provisional","supported","rejected","verified-in-simulation"]},"evidenceIds":{"type":"array","minItems":1,"items":{"type":"string"}},"alternatives":{"type":"array","items":{}},"note":{"type":"string"},"basedOnRevision":{"type":"integer"}},"required":["hypothesisId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"stage_repair","kind":"act","impl":"imperative","description":"Stage an evidence-linked repair without changing the circuit. Optionally include up to 100 native editor actions or one complete CircuitJS export for later approved simulation. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.","title":"Stage repair","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"title":{"type":"string"},"rationale":{"type":"string"},"evidenceIds":{"type":"array","minItems":1,"items":{"type":"string"}},"hypothesisId":{"type":"string"},"actions":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object"}},"circuitText":{"type":"string"},"basedOnRevision":{"type":"integer"}},"required":["title","rationale","evidenceIds"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"request_repair_approval","kind":"act","impl":"imperative","description":"Ask the human to approve applying a staged repair in CircuitJS1. The repair cannot be applied through apply_staged_repair until approval is explicit. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.","title":"Request repair approval","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"repairId":{"type":"string"},"instruction":{"type":"string"},"basedOnRevision":{"type":"integer"}},"required":["repairId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"apply_staged_repair","kind":"act","impl":"imperative","description":"Apply a human-approved staged repair atomically in CircuitJS1. This rejects unapproved repairs and never treats simulation as proof of physical hardware. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.","title":"Apply approved repair","annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"repairId":{"type":"string"},"basedOnRevision":{"type":"integer"}},"required":["repairId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"},{"name":"record_repair_result","kind":"act","impl":"imperative","description":"Record whether an applied repair passed or failed in simulation, or still needs a physical hardware test. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.","title":"Record repair result","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"repairId":{"type":"string"},"status":{"type":"string","enum":["verified-in-simulation","failed-in-simulation","needs-hardware-test"]},"summary":{"type":"string"},"basedOnRevision":{"type":"integer"}},"required":["repairId","status","summary"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/empeirik/"}],"category":"Health & Education","apiSurface":"spec","toolCount":37}}