Tool tree
gradeNot graded
describe_boardAnswer
Get breadboard state as compact JSON: components (id, type, value, pin→hole map), wires, nets (label + attached pins), staged change count, sim status. Call this first and after errors to see the board. Holes: rows A–E and F–J × columns 1–30 (e.g. E14); rails +top, -top, +bot, -bot.
View tool JSON
{
"name": "describe_board",
"kind": "answer",
"impl": "imperative",
"description": "Get breadboard state as compact JSON: components (id, type, value, pin→hole map), wires, nets (label + attached pins), staged change count, sim status. Call this first and after errors to see the board. Holes: rows A–E and F–J × columns 1–30 (e.g. E14); rails +top, -top, +bot, -bot.",
"inputSchema": {
"type": "object",
"properties": {}
}
}list_component_typesAnswer
Catalog of placeable component types: pin names in order, footprint (which holes get occupied relative to the anchor), parameters with units, ranges and defaults, and placement notes. Call before your first place_component.
View tool JSON
{
"name": "list_component_types",
"kind": "answer",
"impl": "imperative",
"description": "Catalog of placeable component types: pin names in order, footprint (which holes get occupied relative to the anchor), parameters with units, ranges and defaults, and placement notes. Call before your first place_component.",
"inputSchema": {
"type": "object",
"properties": {}
}
}probe_nodeAction
Read the instantaneous voltage at a hole from the running/last simulation, plus the current through the component pin there, if any. Requires run_simulation first.
View tool JSON
{
"name": "probe_node",
"kind": "act",
"impl": "imperative",
"description": "Read the instantaneous voltage at a hole from the running/last simulation, plus the current through the component pin there, if any. Requires run_simulation first.",
"inputSchema": {
"type": "object",
"properties": {
"hole": {
"type": "string",
"description": "Hole to probe: bank hole like \"E16\" or a rail name like \"+top\"."
}
},
"required": [
"hole"
]
}
}measure_signalAction
Measure the recorded signal at a hole: frequency_hz, duty_cycle, v_min, v_max, v_mean, edge_count. Use this to verify behavior (e.g. blink rate) instead of predicting it. Requires run_simulation first.
View tool JSON
{
"name": "measure_signal",
"kind": "act",
"impl": "imperative",
"description": "Measure the recorded signal at a hole: frequency_hz, duty_cycle, v_min, v_max, v_mean, edge_count. Use this to verify behavior (e.g. blink rate) instead of predicting it. Requires run_simulation first.",
"inputSchema": {
"type": "object",
"properties": {
"hole": {
"type": "string",
"description": "Hole on the net to measure, e.g. \"A16\" for the 555 OUT net."
},
"window_ms": {
"type": "number",
"description": "Analysis window in ms of recent sim time (1–10000). Default: the full recorded buffer."
}
},
"required": [
"hole"
]
}
}check_circuitAnswer
Run design rule checks on the board including staged changes: missing ground/supply, rail shorts, floating pins, LEDs without series resistors or reversed. Returns issues with severity and the holes involved.
View tool JSON
{
"name": "check_circuit",
"kind": "answer",
"impl": "imperative",
"description": "Run design rule checks on the board including staged changes: missing ground/supply, rail shorts, floating pins, LEDs without series resistors or reversed. Returns issues with severity and the holes involved.",
"inputSchema": {
"type": "object",
"properties": {}
}
}place_componentAction
Stage a new component with its anchor at a hole; returns its id and occupied holes. Changes stay ghosted until commit_changes or user approval. Check list_component_types for footprints. DIP-8 parts must straddle the center channel (anchor on row E or F).
View tool JSON
{
"name": "place_component",
"kind": "act",
"impl": "imperative",
"description": "Stage a new component with its anchor at a hole; returns its id and occupied holes. Changes stay ghosted until commit_changes or user approval. Check list_component_types for footprints. DIP-8 parts must straddle the center channel (anchor on row E or F).",
"inputSchema": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"resistor",
"capacitor",
"led",
"ne555",
"piezo",
"switch",
"battery",
"ground"
],
"description": "Component type — see list_component_types."
},
"anchor_hole": {
"type": "string",
"description": "Hole for pin 1 / anode / \"+\", e.g. \"B2\" or \"E14\". Ground may anchor on a rail like \"-top\"."
},
"params": {
"type": "object",
"description": "Initial parameters, e.g. {\"resistance\":\"12k\"} or {\"color\":\"red\"}. Engineering-notation strings accepted."
},
"orientation": {
"type": "string",
"enum": [
"horizontal",
"vertical"
],
"description": "Two-pin parts: horizontal = pin2 three columns right; vertical = pin2 across the center channel. Default horizontal."
}
},
"required": [
"type",
"anchor_hole"
]
}
}connectAction
Stage a jumper wire between two holes (bank hole like B7, or a rail: +top, -top, +bot, -bot). Refuses no-op wires within one net and +/− rail shorts. Convention: red = VCC, black = GND; other colors from the ribbon rainbow.
View tool JSON
{
"name": "connect",
"kind": "act",
"impl": "imperative",
"description": "Stage a jumper wire between two holes (bank hole like B7, or a rail: +top, -top, +bot, -bot). Refuses no-op wires within one net and +/− rail shorts. Convention: red = VCC, black = GND; other colors from the ribbon rainbow.",
"inputSchema": {
"type": "object",
"properties": {
"from_hole": {
"type": "string",
"description": "Start hole: bank hole like \"A14\" or a rail: +top, -top, +bot, -bot."
},
"to_hole": {
"type": "string",
"description": "End hole, same format as from_hole."
},
"color": {
"type": "string",
"description": "Optional CSS color. Convention: red = VCC, black = GND. Auto-picked when omitted."
}
},
"required": [
"from_hole",
"to_hole"
]
}
}disconnectAction
Stage removal of one jumper wire by id (see describe_board for wire ids).
View tool JSON
{
"name": "disconnect",
"kind": "act",
"impl": "imperative",
"description": "Stage removal of one jumper wire by id (see describe_board for wire ids).",
"inputSchema": {
"type": "object",
"properties": {
"wire_id": {
"type": "string",
"description": "Wire id like \"w3\" — listed by describe_board."
}
},
"required": [
"wire_id"
]
}
}remove_componentAction
Stage removal of a component by id. Any wires ending on its holes are removed too and listed in the result.
View tool JSON
{
"name": "remove_component",
"kind": "act",
"impl": "imperative",
"description": "Stage removal of a component by id. Any wires ending on its holes are removed too and listed in the result.",
"inputSchema": {
"type": "object",
"properties": {
"component_id": {
"type": "string",
"description": "Component id like \"r1\" or \"u1\" — listed by describe_board."
}
},
"required": [
"component_id"
]
}
}set_component_paramAction
Set a component parameter, e.g. resistance or capacitance. Value accepts engineering notation strings: "12k", "10u", "4.7n", "330", "3.3M". Resistor color bands on the board update to match.
View tool JSON
{
"name": "set_component_param",
"kind": "act",
"impl": "imperative",
"description": "Set a component parameter, e.g. resistance or capacitance. Value accepts engineering notation strings: \"12k\", \"10u\", \"4.7n\", \"330\", \"3.3M\". Resistor color bands on the board update to match.",
"inputSchema": {
"type": "object",
"properties": {
"component_id": {
"type": "string",
"description": "Component id, e.g. \"r1\"."
},
"param": {
"type": "string",
"description": "Parameter name: \"resistance\", \"capacitance\", \"voltage\", \"color\" or \"closed\" — see list_component_types."
},
"value": {
"type": [
"string",
"number"
],
"description": "New value. Engineering notation accepted: \"12k\", \"10u\", \"4.7n\", 330."
}
},
"required": [
"component_id",
"param",
"value"
]
}
}run_simulationAction
Compile and run the circuit (committed + staged) for duration_ms of simulated time at speed× real time, then report: convergence, DRC issues, and frequency of the most active net. The sim keeps running afterward (stop_simulation appears). Then verify with measure_signal.
View tool JSON
{
"name": "run_simulation",
"kind": "act",
"impl": "imperative",
"description": "Compile and run the circuit (committed + staged) for duration_ms of simulated time at speed× real time, then report: convergence, DRC issues, and frequency of the most active net. The sim keeps running afterward (stop_simulation appears). Then verify with measure_signal.",
"inputSchema": {
"type": "object",
"properties": {
"duration_ms": {
"type": "number",
"default": 3000,
"minimum": 1,
"maximum": 30000,
"description": "Simulated time to run, in ms (1–30000). Default 3000."
},
"speed": {
"type": "number",
"minimum": 0.1,
"maximum": 1000,
"description": "Speed multiplier vs real time (0.1–1000). Use 1000 to fast-forward slow circuits."
}
}
}
}reset_boardAction
Remove every component and wire, committed and staged, and stop the simulation. Cannot be undone by the agent (the user can press Cmd+Z).
View tool JSON
{
"name": "reset_board",
"kind": "act",
"impl": "imperative",
"description": "Remove every component and wire, committed and staged, and stop the simulation. Cannot be undone by the agent (the user can press Cmd+Z).",
"inputSchema": {
"type": "object",
"properties": {}
}
}request_approvalAction
Show the user a modal summarizing your staged changes and wait for their decision. Returns "approved" (then auto-commits the staged changes), "rejected" (changes stay staged), or "timeout" after 120s.
View tool JSON
{
"name": "request_approval",
"kind": "act",
"impl": "imperative",
"description": "Show the user a modal summarizing your staged changes and wait for their decision. Returns \"approved\" (then auto-commits the staged changes), \"rejected\" (changes stay staged), or \"timeout\" after 120s.",
"inputSchema": {
"type": "object",
"properties": {
"summary": {
"type": "string",
"description": "Short human-readable summary of the staged changes for the user to approve."
}
},
"required": [
"summary"
]
}
}