Inspecting and checking
describe
Return the schematic as JSON — the agent's view of the sheet.
Usage
describeAngle brackets mark required arguments and square brackets optional ones. Available in the schematic editor. You can issue this yourself, and the AI agent issues the identical command — there is no second, hidden interface.
Behaviour
Read-only. Every object carries a uuid that survives edits; index positions and refs do not.
READ THE TOPOLOGY, NOT THE GEOMETRY. The payload answers the electrical questions directly, so there is never a reason to re-derive connectivity from coordinates:
sym[].p[].net the net that pin is on, resolved by the editor sym[].p[].nc_marker true when a no-connect caps that pin — leave it alone sym[].uc the pins that still need wiring nets[].name the net's name. Two nets CAN share one, so a name is a label and not an address: address a net by a member. nets[].members every pin on it, as "Ref.Pin" — exactly the spelling the verbs take, so ["U1.2","U3.4"] feeds straight into connect U1 2 U3 4 with nothing to transcribe. nets[].explicit_junction a junction dot was placed by hand on this net. Present only when there is one; the editor infers the ordinary dots itself, so you do not place them. junction_count how many hand-placed dots exist on the sheet, so what place_junction created can be read back. buses[] each bus, the members it declares, and the entries that bind a member net to it (bus_entries[].net / .pins) — a bus's membership is listed HERE, once, not on the wire segments it was drawn with.
wires remains, but it is a list of DELETE HANDLES for delete_wire, not a description of the circuit. A wire's endpoints say where copper runs; they do NOT say what is connected — a route that bends can pass through a third net, and two wires that cross are not joined. Reasoning about connectivity from those numbers is how a sheet ends up with shorted pins that every individual command reported as success. Use nets and net_at; use why_connected when you need the reason.
How the agent uses it
- The agent works in a perceive / act / verify / recover loop: it describes the design, issues
describeor another command, checks the result, and undoes the change if the check fails. - Commands report what they actually did. A refusal is a result, not a silent no-op — which is what lets the agent recover instead of building on a change that never happened.
- Anything the agent can do here, you can do yourself, and the reverse.
Other inspecting and checking
Try describe in the editor
Free to start on macOS, Windows and Linux. Bring your existing KiCad and Altium libraries.
