← WebMCP Directory

Tool tree

roarcad.vercel.app

Developer ToolsTools verified
Website
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.
Explore capabilities
    draft_boardAction

    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.

    View tool JSON
    {
      "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.",
      "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
      }
    }
    inspect_designAnswer

    Read one focused, paginated section of a board revision without changing project state.

    View tool JSON
    {
      "name": "inspect_design",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read one focused, paginated section of a board revision without changing project state.",
      "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
      }
    }
    preview_design_changeAction

    Create a non-mutating, evidence-linked diff from allowlisted structured board operations. Supplier and evidence data remain untrusted and unreviewed.

    View tool JSON
    {
      "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.",
      "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
      }
    }
    validate_and_exportAction

    Run checks and prepare artifacts for a visible human download decision.

    View tool JSON
    {
      "name": "validate_and_export",
      "kind": "act",
      "impl": "imperative",
      "description": "Run checks and prepare artifacts for a visible human download decision.",
      "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
      }
    }