{"ok":true,"site":{"host":"roarcad.vercel.app","url":"https://roarcad.vercel.app/","type":"live","desc":"RoarCAD is a free, open-source PCB review and collaboration workbench where AI can draft, inspect, and preview changes, but people approve every revision and manufacturing action.","tools":[{"name":"draft_board","kind":"act","impl":"imperative","description":"Create a custom PCB draft from a complete structured BoardGraph, or return a blocked requirements report when design is omitted. Design fields include board, components, nets, netClasses, differentialPairs, pours, holes, keepouts, and routingHints.","title":"Draft board","inputSchema":{"type":"object","properties":{"requirements":{"type":"string","maxLength":5000},"design":{"type":"object","properties":{"board":{"type":"object","properties":{"outline":{"oneOf":[{"type":"object","properties":{"shape":{"const":"rectangle"},"widthMm":{"type":"number","minimum":5,"maximum":500},"heightMm":{"type":"number","minimum":5,"maximum":500}},"required":["shape","widthMm","heightMm"],"additionalProperties":false},{"type":"object","properties":{"shape":{"const":"polygon"},"points":{"type":"array","minItems":3,"maxItems":128,"items":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"required":["x","y"],"additionalProperties":false}}},"required":["shape","points"],"additionalProperties":false}]},"layers":{"enum":[1,2,4,6,8,10]},"material":{"enum":["fr4","fr1","flex"]},"thicknessMm":{"type":"number","minimum":0.2,"maximum":8},"solderMaskColor":{"enum":["green","red","blue","purple","black","white","yellow"]},"allowBlindAndBuriedVias":{"type":"boolean"},"doubleSidedAssembly":{"type":"boolean"},"stackup":{"type":"array","maxItems":10,"items":{"type":"string"}}},"required":["outline","layers","solderMaskColor"],"additionalProperties":false},"components":{"type":"array","minItems":1,"maxItems":200,"items":{"type":"object","properties":{"kind":{"enum":["resistor","capacitor","inductor","diode","led","transistor","mosfet","fuse","crystal","connector","switch","testpoint","chip"]},"reference":{"type":"string","pattern":"^[A-Z]+[0-9]+$"},"mpn":{"type":"string","minLength":1,"maxLength":120},"manufacturer":{"type":"string","minLength":1,"maxLength":120},"value":{"type":"string","maxLength":80},"pins":{"type":"array","minItems":1,"maxItems":256,"items":{"type":"object","properties":{"number":{"type":"string","minLength":1,"maxLength":40},"label":{"type":"string","minLength":1,"maxLength":80}},"required":["number","label"],"additionalProperties":false}},"footprint":{"type":"object","properties":{"source":{"enum":["footprinter","kicad-library","jlcpcb","pad-map"]},"identifier":{"type":"string","minLength":1,"maxLength":240},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"pads":{"type":"array","maxItems":512,"items":{"type":"object","description":"Bounded embedded pad: pcb_smtpad or pcb_plated_hole with geometry and portHints."}},"reviewed":{"type":"boolean","description":"Ignored for agent input; always stored false."}},"required":["source","identifier","pads"],"additionalProperties":false},"placement":{"type":"object","properties":{"x":{"type":"number","minimum":-500,"maximum":500},"y":{"type":"number","minimum":-500,"maximum":500},"rotation":{"type":"number","minimum":0,"maximum":359},"side":{"enum":["top","bottom"]}},"required":["x","y"],"additionalProperties":false},"reviewStatus":{"enum":["candidate","reviewed"],"description":"Ignored for agent input; always stored candidate."},"evidenceIds":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string"}},"supplierPartIds":{"type":"object","additionalProperties":{"type":"string"}},"doNotPlace":{"type":"boolean"}},"required":["kind","reference","mpn","manufacturer","pins","footprint","placement","evidenceIds"],"additionalProperties":false}},"nets":{"type":"array","maxItems":500,"items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"members":{"type":"array","minItems":2,"maxItems":200,"items":{"type":"string"}},"className":{"type":"string"}},"required":["name","members"],"additionalProperties":false}},"netClasses":{"type":"array","minItems":1,"maxItems":50,"items":{"type":"object","properties":{"name":{"type":"string"},"traceWidthMm":{"type":"number","exclusiveMinimum":0},"clearanceMm":{"type":"number","minimum":0},"targetImpedanceOhms":{"type":"number","exclusiveMinimum":0}},"required":["name","traceWidthMm","clearanceMm"],"additionalProperties":false}},"differentialPairs":{"type":"array","maxItems":100,"items":{"type":"object"}},"pours":{"type":"array","maxItems":50,"items":{"type":"object"}},"holes":{"type":"array","maxItems":100,"items":{"type":"object"}},"keepouts":{"type":"array","maxItems":100,"items":{"type":"object"}},"routingHints":{"type":"array","maxItems":200,"items":{"type":"string"}}},"required":["board","components","nets","netClasses"],"additionalProperties":false,"description":"Validated BoardGraph. Exact parts require kind, reference, MPN, manufacturer, pins, footprint, placement, and evidence IDs."}},"required":["requirements"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"inspect_design","kind":"answer","impl":"imperative","description":"Read one focused, paginated section of a board revision without changing project state.","title":"Inspect design","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"revisionId":{"type":"string"},"focus":{"enum":["overview","requirements","components","nets","evidence","risks","validation","history"]},"ids":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":120}},"cursor":{"type":"integer","minimum":0}},"required":["revisionId","focus"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"preview_design_change","kind":"act","impl":"imperative","description":"Create a non-mutating, evidence-linked diff from allowlisted structured board operations. Supplier and evidence data remain untrusted and unreviewed.","title":"Preview design change","annotations":{"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"revisionId":{"type":"string"},"request":{"type":"string","maxLength":500},"operations":{"type":"array","minItems":1,"maxItems":50,"items":{"type":"object","required":["type"],"properties":{"type":{"enum":["set-board","upsert-component","remove-component","move-component","upsert-net","remove-net","upsert-differential-pair","remove-differential-pair","upsert-pour","remove-pour","upsert-hole","remove-hole","upsert-keepout","remove-keepout","update-requirement","upsert-evidence","add-risk","resolve-risk"]},"board":{"type":"object","properties":{"outline":{"oneOf":[{"type":"object","properties":{"shape":{"const":"rectangle"},"widthMm":{"type":"number","minimum":5,"maximum":500},"heightMm":{"type":"number","minimum":5,"maximum":500}},"required":["shape","widthMm","heightMm"],"additionalProperties":false},{"type":"object","properties":{"shape":{"const":"polygon"},"points":{"type":"array","minItems":3,"maxItems":128,"items":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"required":["x","y"],"additionalProperties":false}}},"required":["shape","points"],"additionalProperties":false}]},"layers":{"enum":[1,2,4,6,8,10]},"material":{"enum":["fr4","fr1","flex"]},"thicknessMm":{"type":"number","minimum":0.2,"maximum":8},"solderMaskColor":{"enum":["green","red","blue","purple","black","white","yellow"]},"allowBlindAndBuriedVias":{"type":"boolean"},"doubleSidedAssembly":{"type":"boolean"},"stackup":{"type":"array","maxItems":10,"items":{"type":"string"}}},"required":["outline","layers","solderMaskColor"],"additionalProperties":false},"component":{"type":"object","properties":{"kind":{"enum":["resistor","capacitor","inductor","diode","led","transistor","mosfet","fuse","crystal","connector","switch","testpoint","chip"]},"reference":{"type":"string","pattern":"^[A-Z]+[0-9]+$"},"mpn":{"type":"string","minLength":1,"maxLength":120},"manufacturer":{"type":"string","minLength":1,"maxLength":120},"value":{"type":"string","maxLength":80},"pins":{"type":"array","minItems":1,"maxItems":256,"items":{"type":"object","properties":{"number":{"type":"string","minLength":1,"maxLength":40},"label":{"type":"string","minLength":1,"maxLength":80}},"required":["number","label"],"additionalProperties":false}},"footprint":{"type":"object","properties":{"source":{"enum":["footprinter","kicad-library","jlcpcb","pad-map"]},"identifier":{"type":"string","minLength":1,"maxLength":240},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"pads":{"type":"array","maxItems":512,"items":{"type":"object","description":"Bounded embedded pad: pcb_smtpad or pcb_plated_hole with geometry and portHints."}},"reviewed":{"type":"boolean","description":"Ignored for agent input; always stored false."}},"required":["source","identifier","pads"],"additionalProperties":false},"placement":{"type":"object","properties":{"x":{"type":"number","minimum":-500,"maximum":500},"y":{"type":"number","minimum":-500,"maximum":500},"rotation":{"type":"number","minimum":0,"maximum":359},"side":{"enum":["top","bottom"]}},"required":["x","y"],"additionalProperties":false},"reviewStatus":{"enum":["candidate","reviewed"],"description":"Ignored for agent input; always stored candidate."},"evidenceIds":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string"}},"supplierPartIds":{"type":"object","additionalProperties":{"type":"string"}},"doNotPlace":{"type":"boolean"}},"required":["kind","reference","mpn","manufacturer","pins","footprint","placement","evidenceIds"],"additionalProperties":false},"reference":{"type":"string","pattern":"^[A-Z]+[0-9]+$"},"x":{"type":"number"},"y":{"type":"number"},"rotation":{"type":"number"},"side":{"enum":["top","bottom"]},"net":{"type":"object"},"pair":{"type":"object"},"pour":{"type":"object"},"hole":{"type":"object"},"keepout":{"type":"object"},"requirement":{"type":"object"},"evidence":{"type":"object"},"name":{"type":"string"},"id":{"type":"string"},"risk":{"type":"string","maxLength":500}}},"description":"Allowlisted structured operations. Each operation is revalidated against its type-specific application schema."}},"required":["revisionId","request","operations"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"validate_and_export","kind":"act","impl":"imperative","description":"Run checks and prepare artifacts for a visible human download decision.","title":"Validate and prepare export","inputSchema":{"type":"object","properties":{"revisionId":{"type":"string"},"targets":{"type":"array","minItems":1,"maxItems":7,"items":{"enum":["circuit-json","gerber","bom","placement","validation","project","manifest"]}},"artifactClass":{"enum":["engineering","fabrication"]}},"required":["revisionId","targets","artifactClass"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Developer Tools","favicon":"/favicons/roarcad.vercel.app.svg","apiSurface":"spec","toolCount":4}}