Tool tree
gradeNot graded
get_workspaceAnswer
Read the active circuit session, CircuitJS1 connection, circuit summary, measurements, saved versions, and visible work log. Use this first.
View tool JSON
{
"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.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/empeirik/"
}start_sessionAction
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.
View tool JSON
{
"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.",
"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"
]
},
"page": "/empeirik/"
}inspect_circuitAnswer
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.
View tool JSON
{
"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.",
"inputSchema": {
"type": "object",
"properties": {
"basedOnRevision": {
"type": "integer"
}
}
},
"page": "/empeirik/"
}load_circuitAction
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.
View tool JSON
{
"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.",
"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"
]
},
"page": "/empeirik/"
}restore_circuit_versionAction
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.
View tool JSON
{
"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.",
"inputSchema": {
"type": "object",
"properties": {
"versionId": {
"type": "string",
"description": "Saved version id, for example v1"
},
"basedOnRevision": {
"type": "integer"
}
},
"required": [
"versionId"
]
},
"page": "/empeirik/"
}measure_nodeAction
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.
View tool JSON
{
"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.",
"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"
]
},
"page": "/empeirik/"
}set_simulation_runningAction
Start or pause the active CircuitJS1 simulation and record why. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.
View tool JSON
{
"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.",
"inputSchema": {
"type": "object",
"properties": {
"running": {
"type": "boolean"
},
"reason": {
"type": "string"
},
"basedOnRevision": {
"type": "integer"
}
},
"required": [
"running"
]
},
"page": "/empeirik/"
}record_noteAction
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.
View tool JSON
{
"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.",
"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"
]
},
"page": "/empeirik/"
}finish_sessionAction
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.
View tool JSON
{
"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.",
"inputSchema": {
"type": "object",
"properties": {
"outcome": {
"type": "string",
"enum": [
"resolved",
"needs-hardware-test",
"blocked"
]
},
"summary": {
"type": "string"
},
"basedOnRevision": {
"type": "integer"
}
},
"required": [
"outcome",
"summary"
]
},
"page": "/empeirik/"
}get_circuit_capabilitiesAnswer
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.
View tool JSON
{
"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.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/empeirik/"
}get_circuit_editor_stateAnswer
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.
View tool JSON
{
"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.",
"inputSchema": {
"type": "object",
"properties": {
"includeCircuitText": {
"type": "boolean",
"default": false
}
}
},
"page": "/empeirik/"
}add_circuit_elementAction
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.
View tool JSON
{
"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.",
"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"
]
},
"page": "/empeirik/"
}edit_circuit_elementAction
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.
View tool JSON
{
"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.",
"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"
]
},
"page": "/empeirik/"
}move_circuit_elementAction
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.
View tool JSON
{
"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.",
"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"
]
},
"page": "/empeirik/"
}remove_circuit_elementsAction
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.
View tool JSON
{
"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.",
"inputSchema": {
"type": "object",
"properties": {
"elementIndices": {
"type": "array",
"minItems": 1,
"items": {
"type": "integer",
"minimum": 0
}
},
"summary": {
"type": "string"
},
"basedOnRevision": {
"type": "integer"
}
},
"required": [
"elementIndices",
"summary"
]
},
"page": "/empeirik/"
}split_circuit_wireAction
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.
View tool JSON
{
"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.",
"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"
]
},
"page": "/empeirik/"
}select_circuit_elementsAction
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.
View tool JSON
{
"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.",
"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"
]
},
"page": "/empeirik/"
}set_circuit_element_controlAction
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.
View tool JSON
{
"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.",
"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"
]
},
"page": "/empeirik/"
}execute_circuit_commandAction
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.
View tool JSON
{
"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.",
"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"
]
},
"page": "/empeirik/"
}configure_circuit_adjustableAction
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.
View tool JSON
{
"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.",
"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"
]
},
"page": "/empeirik/"
}set_circuit_optionAction
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.
View tool JSON
{
"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.",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"value": {
"type": "boolean"
},
"summary": {
"type": "string"
},
"basedOnRevision": {
"type": "integer"
}
},
"required": [
"name",
"value",
"summary"
]
},
"page": "/empeirik/"
}set_circuit_ui_controlAction
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.
View tool JSON
{
"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.",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"enum": [
"simulationSpeed",
"currentSpeed",
"powerBrightness"
]
},
"value": {
"type": "integer"
},
"summary": {
"type": "string"
},
"basedOnRevision": {
"type": "integer"
}
},
"required": [
"name",
"value",
"summary"
]
},
"page": "/empeirik/"
}set_circuit_viewAction
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.
View tool JSON
{
"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.",
"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"
]
},
"page": "/empeirik/"
}set_circuit_scope_propertyAction
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.
View tool JSON
{
"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.",
"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"
]
},
"page": "/empeirik/"
}set_global_circuit_propertyAction
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.
View tool JSON
{
"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.",
"inputSchema": {
"type": "object",
"properties": {
"fieldIndex": {
"type": "integer",
"minimum": 0
},
"value": {
"description": "Field value"
},
"summary": {
"type": "string"
},
"basedOnRevision": {
"type": "integer"
}
},
"required": [
"fieldIndex",
"value",
"summary"
]
},
"page": "/empeirik/"
}apply_circuit_actionsAction
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.
View tool JSON
{
"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.",
"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"
]
},
"page": "/empeirik/"
}undo_circuit_editAction
Execute CircuitJS1's native Undo command. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.
View tool JSON
{
"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.",
"inputSchema": {
"type": "object",
"properties": {
"reason": {
"type": "string"
},
"basedOnRevision": {
"type": "integer"
}
}
},
"page": "/empeirik/"
}redo_circuit_editAction
Execute CircuitJS1's native Redo command. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.
View tool JSON
{
"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.",
"inputSchema": {
"type": "object",
"properties": {
"reason": {
"type": "string"
},
"basedOnRevision": {
"type": "integer"
}
}
},
"page": "/empeirik/"
}reset_circuit_simulationAction
Reset simulation time and transient state without replacing the circuit. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.
View tool JSON
{
"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.",
"inputSchema": {
"type": "object",
"properties": {
"reason": {
"type": "string"
},
"basedOnRevision": {
"type": "integer"
}
}
},
"page": "/empeirik/"
}record_investigationAction
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.
View tool JSON
{
"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.",
"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"
]
},
"page": "/empeirik/"
}record_evidenceAction
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.
View tool JSON
{
"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.",
"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"
]
},
"page": "/empeirik/"
}propose_hypothesisAction
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.
View tool JSON
{
"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.",
"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"
]
},
"page": "/empeirik/"
}update_hypothesisAction
Refine, support, reject, or annotate an existing hypothesis as evidence changes. Include basedOnRevision from get_workspace when changing the workspace; stale actions are rejected.
View tool JSON
{
"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.",
"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"
]
},
"page": "/empeirik/"
}stage_repairAction
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.
View tool JSON
{
"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.",
"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"
]
},
"page": "/empeirik/"
}request_repair_approvalAction
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.
View tool JSON
{
"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.",
"inputSchema": {
"type": "object",
"properties": {
"repairId": {
"type": "string"
},
"instruction": {
"type": "string"
},
"basedOnRevision": {
"type": "integer"
}
},
"required": [
"repairId"
]
},
"page": "/empeirik/"
}apply_staged_repairAction
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.
View tool JSON
{
"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.",
"inputSchema": {
"type": "object",
"properties": {
"repairId": {
"type": "string"
},
"basedOnRevision": {
"type": "integer"
}
},
"required": [
"repairId"
]
},
"page": "/empeirik/"
}record_repair_resultAction
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.
View tool JSON
{
"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.",
"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"
]
},
"page": "/empeirik/"
}