Electrical single-line and multi-line diagrams: build, check (NF C 15-100, IEC 60364), draw, PDF.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Edit an electrical diagram by node id (change a rating, add a circuit, move a load...) and return the new document. ops (applied in order): {"op":"set","id":ID,"path":"in_A","value":20} (null value removes; no id = document root, e.g. path "installation.earthing"); {"op":"add","parent":ID,"node":{...},"index":0} (or "at":"sources"); {"op":"remove","id":ID}; {"op":"move","id":ID,"parent":ID,"index":0}; {"op":"rename","id":ID,"new_id":NEW}; {"op":"link","link":{"kind":"control","from":ID,"to":ID}}; {"op":"unlink","id":LINK_ID} or {"op":"unlink","from":ID,"to":ID,"kind":K}. On failure returns ok=false and errors naming the failing op index (null = validation of the result).
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Edit an electrical diagram by node id (change a rating, add a circuit, move a load...) and return the new document. ops (applied in order): {"op":"set","id":ID,"path":"in_A","value":20} (null value removes; no id = document root, e.g. path "installation.earthing"); {"op":"add","parent":ID,"node":{...},"index":0} (or "at":"sources"); {"op":"remove","id":ID}; {"op":"move","id":ID,"parent":ID,"index":0}; {"op":"rename","id":ID,"new_id":NEW}; {"op":"link","link":{"kind":"control","from":ID,"to":ID}}; {"op":"unlink","id":LINK_ID} or {"op":"unlink","from":ID,"to":ID,"kind":K}. On failure returns ok=false and errors naming the failing op index (null = validation of the result).
| Argument | Type | Description |
|---|---|---|
| ops* | any | |
| document* | any | |
| validate | boolean |
{
"type": "object",
"title": "apply_patchArguments",
"required": [
"document",
"ops"
],
"properties": {
"ops": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
}
},
{
"type": "string"
}
],
"title": "Ops"
},
"document": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "string"
}
],
"title": "Document"
},
"validate": {
"type": "boolean",
"title": "Validate",
"default": true
}
}
}Bill of materials of an electrical installation (nomenclature), grouped by manufacturer / part number (nodes with a product reference).
| Argument | Type | Description |
|---|---|---|
| document* | any |
{
"type": "object",
"title": "bomArguments",
"required": [
"document"
],
"properties": {
"document": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "string"
}
],
"title": "Document"
}
}
}Check an electrical installation (single-line diagram, panel, schéma unifilaire, tableau électrique): validates the document, then applies the rule profiles (NF C 15-100 'nfc15100', IEC 60364 'iec60364', PLC; default: the document's 'profiles'; 'core' always applies): breaker ratings against cable sections, RCDs, circuits per protection, selectivity... Returns findings (level error/warning/info, rule, node id, message, source), a summary, viewer_url (opens the document in the uniwire web editor: drawing, findings, downloads) and pdf_url (the PDF drawn by uniwire). Give both to the user as clickable links. 'scope' says what the checks cover: tell the user once that they are not a conformity certificate.
| Argument | Type | Description |
|---|---|---|
| document* | any | |
| profiles | any |
{
"type": "object",
"title": "checkArguments",
"required": [
"document"
],
"properties": {
"document": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "string"
}
],
"title": "Document"
},
"profiles": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Profiles",
"default": null
}
}
}Text outline of an electrical diagram: installation, full tree of the panel with stable ids, ratings and cables, links, interlocks, boards and findings summary. Use it to review a document or find the ids for apply_patch.
| Argument | Type | Description |
|---|---|---|
| lang | string | |
| document* | any |
{
"type": "object",
"title": "describeArguments",
"required": [
"document"
],
"properties": {
"lang": {
"type": "string",
"title": "Lang",
"default": "en"
},
"document": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "string"
}
],
"title": "Document"
}
}
}Return an example installation document by name (or number prefix, e.g. '02'), to adapt to the user's project.
| Argument | Type | Description |
|---|---|---|
| name* | string |
{
"type": "object",
"title": "get_exampleArguments",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"title": "Name"
}
}
}Reference card of the uniwire format for electrical diagrams: document skeleton, node types (breakers, RCDs, cables, loads, transformers, PV...) and fields, enums, links, pitfalls, examples. Read it before writing a document. level: 'compact' (~3k tokens) or 'full'; lang: 'en' or 'fr'.
| Argument | Type | Description |
|---|---|---|
| lang | string | |
| level | string |
{
"type": "object",
"title": "get_reference_cardArguments",
"properties": {
"lang": {
"type": "string",
"title": "Lang",
"default": "en"
},
"level": {
"type": "string",
"title": "Level",
"default": "compact"
}
}
}List the 52 example installations (dwellings, shops, offices, workshops, PV, EV charging, UPS, MV/LV substations, PLCs): name, title, language, profiles, earthing, system. Good starting points.
No arguments.
{
"type": "object",
"title": "list_examplesArguments",
"properties": {}
}List node types (type, category, label), optionally for one category: source, measure, protection, switching, control, converter, conductor, container, connector, load.
| Argument | Type | Description |
|---|---|---|
| lang | string | |
| category | any |
{
"type": "object",
"title": "list_typesArguments",
"properties": {
"lang": {
"type": "string",
"title": "Lang",
"default": "en"
},
"category": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Category",
"default": null
}
}
}Resolved document: templates applied, every id assigned, canonical numbers.
| Argument | Type | Description |
|---|---|---|
| document* | any |
{
"type": "object",
"title": "normalizeArguments",
"required": [
"document"
],
"properties": {
"document": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "string"
}
],
"title": "Document"
}
}
}Draw the electrical diagram (schéma unifilaire / multifilaire). kind: 'single-line' or 'multi-line'; view: a view id of the document (e.g. a wire-marking view). format 'svg' returns the SVG text of every sheet (or of 'sheet', numbered from 1); 'pdf' writes to 'path' if given, else returns base64 (requires the uniwire[pdf] extra); on the hosted server it returns pdf_url instead. To give the user the PDF, give them pdf_url as a clickable link. color: 'none' | 'conductors' | 'phase' | 'source' | 'status' | 'voltage' (adds a legend); conductor_colors: 'iec' (IEC 60445) | 'us'.
| Argument | Type | Description |
|---|---|---|
| kind | string | |
| path | any | |
| view | any | |
| color | any | |
| sheet | any | |
| format | string | |
| document* | any | |
| conductor_colors | any |
{
"type": "object",
"title": "renderArguments",
"required": [
"document"
],
"properties": {
"kind": {
"type": "string",
"title": "Kind",
"default": "single-line"
},
"path": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Path",
"default": null
},
"view": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "View",
"default": null
},
"color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Color",
"default": null
},
"sheet": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Sheet",
"default": null
},
"format": {
"type": "string",
"title": "Format",
"default": "svg"
},
"document": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "string"
}
],
"title": "Document"
},
"conductor_colors": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Conductor Colors",
"default": null
}
}
}All fields of a node type with descriptions and allowed values (enums).
| Argument | Type | Description |
|---|---|---|
| lang | string | |
| type* | string |
{
"type": "object",
"title": "type_infoArguments",
"required": [
"type"
],
"properties": {
"lang": {
"type": "string",
"title": "Lang",
"default": "en"
},
"type": {
"type": "string",
"title": "Type"
}
}
}Validate a uniwire document (electrical diagram as JSON: object, JSON text or file path) against the format. Returns valid + issues, each naming the node id and field when possible, plus viewer_url and pdf_url (links for the user). check does the same and also applies the electrical rules.
| Argument | Type | Description |
|---|---|---|
| document* | any |
{
"type": "object",
"title": "validateArguments",
"required": [
"document"
],
"properties": {
"document": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "string"
}
],
"title": "Document"
}
}
}Links for the user: viewer_url opens the document in the uniwire web editor (drawing, single-line and multi-line, rule findings, PDF and SVG downloads, nothing to install); pdf_url gives the PDF drawn by uniwire. On the hosted server the document is kept 30 days so that the short links open it (anyone with a link can open it); elsewhere it travels in the link (after '#') and is stored nowhere. Give them to the user as clickable Markdown links.
| Argument | Type | Description |
|---|---|---|
| document* | any |
{
"type": "object",
"title": "viewer_linkArguments",
"required": [
"document"
],
"properties": {
"document": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "string"
}
],
"title": "Document"
}
}
}Wiring exports of an installation as rows with stable column names (repérage des fils, carnet de câbles): what='markers' (one row per wire end, for label printers), 'wires' (wire list) or 'cables' (cable schedule). Marks follow the wire_marking rules of the view (id), by default the first view that declares them.
| Argument | Type | Description |
|---|---|---|
| view | any | |
| what | string | |
| document* | any |
{
"type": "object",
"title": "wiringArguments",
"required": [
"document"
],
"properties": {
"view": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "View",
"default": null
},
"what": {
"type": "string",
"title": "What",
"default": "markers"
},
"document": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "string"
}
],
"title": "Document"
}
}
}