{"ok":true,"site":{"host":"iamtanmaypro.github.io","url":"https://iamtanmaypro.github.io/sparkbench/","type":"live","desc":"Sparkbench","tools":[{"name":"ping_workbench","kind":"act","impl":"imperative","description":"Health check for the Sparkbench electronics lab. Call this first to confirm you are connected. Returns the app name and a greeting so the student knows their agent can see the workbench.","annotations":{"readOnlyHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/sparkbench/"},{"name":"describe_workbench","kind":"answer","impl":"imperative","description":"Get a compact summary of the electronics bench: every component with its id, type and value, plus how terminals are wired together. The canvas is a rendered simulation, so looking at the screen gives shapes at best: this tool is the only source of exact ids, values and terminal-level wiring. Call it first to ground yourself before reading measurements or suggesting changes.","annotations":{"readOnlyHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/sparkbench/"},{"name":"read_measurements","kind":"answer","impl":"imperative","description":"Read the live simulation: voltage across, current through, and power in each component, plus fault flags (short circuit, open circuit, LED burnout, blown fuse). The screen only renders brightness and one headline fault, so these solver numbers are the only exact readings available. Use it after any wiring change to see what the circuit really does.","annotations":{"readOnlyHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/sparkbench/"},{"name":"get_lesson_state","kind":"answer","impl":"imperative","description":"See which lesson the student is working on, its goal, how far through the five-lesson track they are, and whether the current circuit meets the goal yet. Pair with check_answer when the student asks how they are doing.","annotations":{"readOnlyHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/sparkbench/"},{"name":"read_notes","kind":"answer","impl":"imperative","description":"Read the sticky notes pinned to the bench. The student or you may have written them; notes can contain the student's own assumptions, so verify claims against measurements before relying on them.","annotations":{"readOnlyHint":true,"untrustedContentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/sparkbench/"},{"name":"check_answer","kind":"answer","impl":"imperative","description":"Check the student's circuit against the current lesson goal. Returns pass or fail with the specific failing checks, which the lesson panel never lists on screen. It never reveals the full solution, so you can coach without giving the answer away.","annotations":{"readOnlyHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/sparkbench/"},{"name":"open_lesson","kind":"act","impl":"imperative","description":"Switch the bench to a different lesson. The seeded circuit for that lesson is loaded and the goal panel updates. Dynamic toolsets follow the lesson, so the actions you may propose change with it.","annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"lesson_id":{"type":"string","description":"Lesson to open: ohms-law, series-parallel, switches-logic, diagnose-fault, or free-build."}},"required":["lesson_id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/sparkbench/"},{"name":"focus_component","kind":"act","impl":"imperative","description":"Point the student's attention at one component: the canvas pans and zooms to it, it gets a pulse highlight, and it becomes the selected part in the inspector. Use it to say \"look here\" while explaining.","annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"Component id from describe_workbench, e.g. bat1 or r2."}},"required":["id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/sparkbench/"},{"name":"place_component","kind":"act","impl":"imperative","description":"Add a new component to the bench, like the student dragging one from the parts palette. The student must approve before it appears. Call describe_workbench first, place with this, then wire the part with connect.","annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"type":{"type":"string","description":"Component to place: battery, resistor, led, bulb, switch, fuse, ammeter, or voltmeter (the lesson may restrict this)."},"x":{"type":"number","description":"Horizontal position on the bench; omit to let the bench pick a free spot."},"y":{"type":"number","description":"Vertical position on the bench; omit to let the bench pick a free spot."},"properties":{"type":"object","properties":{"value":{"type":"number","description":"Starting value: ohms for resistors, volts for batteries, amps for fuses."}},"additionalProperties":false}},"required":["type"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/sparkbench/"},{"name":"connect","kind":"act","impl":"imperative","description":"Wire two component terminals together, like dragging a wire between them on the canvas. Terminal ids look like bat1:a or r2:b. The student must approve before the wire appears; the bench re-solves right after.","annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"from_terminal":{"type":"string","description":"Terminal to start the wire from, format <component>:a or :b, e.g. bat1:a."},"to_terminal":{"type":"string","description":"Terminal to end the wire at, format <component>:a or :b, e.g. r1:b."}},"required":["from_terminal","to_terminal"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/sparkbench/"},{"name":"set_property","kind":"act","impl":"imperative","description":"Change one property of a component already on the bench: its value (resistance in ohms, battery voltage, fuse rating) or a switch's open/closed state. The student must approve before the change is applied.","annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"Component id from describe_workbench, e.g. r2."},"property":{"type":"string","enum":["value","closed"],"description":"Which property to change: value (number) or closed (boolean, switches only). Defaults to value."},"value":{"type":["number","boolean"],"description":"New setting: a number for value (ohms, volts, amps), or true/false for closed."}},"required":["id","value"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/sparkbench/"},{"name":"get_proposal_status","kind":"answer","impl":"imperative","description":"Check the outcome of a proposal you made with a write tool: approved, rejected, or pending_approval. Call it after any write returns pending_approval so you never assume the change happened.","annotations":{"readOnlyHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"proposal_id":{"type":"string","description":"The proposal_id a write tool returned, e.g. prop12."}},"required":["proposal_id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/sparkbench/"},{"name":"submit_lab_report","kind":"transact","impl":"declarative","description":"Submit the lab report for the current lesson: the student fills in their name, what they built, and what they observed versus what they expected. Fill the fields in for the student, then let them check the form and press Submit themselves; the report is never sent automatically.","inputSchema":{"type":"object","properties":{"student_name":{"type":"string","description":"Your name"},"what_i_built":{"type":"string","description":"What did you build today?"},"observed_vs_expected":{"type":"string","description":"What did you expect vs what happened?"}},"required":["student_name","what_i_built","observed_vs_expected"]},"__source":"spec","__declarative":true,"page":"/sparkbench/"}],"category":"Health & Education","favicon":"/favicons/iamtanmaypro.github.io.svg","apiSurface":"spec","toolCount":13}}