uniwire
by uniwire-dev · remote · no sign-in to list tools · v0.1.1 · published by GitHub user uniwire-dev
Electrical single-line and multi-line diagrams: build, check (NF C 15-100, IEC 60364), draw, PDF.
14 tools: 9 change things and 5 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things9Claude Code: ask: see these tools
- Only reads5Claude Code: allow: see these tools
2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http uniwire https://mcp.uniwire.sh/mcpFindings
Matches of fixed checks, with the text they matched.
- Warntype_info
The server marks "type_info" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "type_info" says "type": a word for a change.
- Warnvalidate
The server marks "validate" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "validate" says "validate": a word for reading.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
14 tools
Changes things 9Claude Code: ask
apply_patchEdit an electrical diagram by node id (change a rating, add a circuit, move a load...) and return the new document.No findings
Why it is in this group
- The name "apply_patch" says "apply": a word for a change.
Description, as the server wrote 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).
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
- readOnlyHint: false
- title: Edit an electrical diagram
bomBill of materials of an electrical installation (nomenclature), grouped by manufacturer / part number (nodes with a product reference).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Bill of materials of an electrical installation (nomenclature), grouped by manufacturer / part number (nodes with a product reference).
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
- title: Bill of materials
checkCheck 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'…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it 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.
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
- readOnlyHint: false
- title: Check an electrical installation (NF C 15-100, IEC 60364)
normalizeResolved document: templates applied, every id assigned, canonical numbers.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Resolved document: templates applied, every id assigned, canonical numbers.
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
- title: Normalized document
renderDraw the electrical diagram (schéma unifilaire / multifilaire).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it 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'.
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
- readOnlyHint: false
- title: Draw the single-line or multi-line diagram
type_infoAll fields of a node type with descriptions and allowed values (enums).1 finding
Why it is in this group
- The name "type_info" says "type": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "type_info" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "type_info" says "type": a word for a change.
Description, as the server wrote it All fields of a node type with descriptions and allowed values (enums).
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
- title: Fields of a node type
validateValidate a uniwire document (electrical diagram as JSON: object, JSON text or file path) against the format.1 finding
Why it is in this group
- The name "validate" says "validate": a word for reading.
- The server marks it as not read-only (readOnlyHint: false).
Findings
- Warn
The server marks "validate" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "validate" says "validate": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
- readOnlyHint: false
- title: Validate an electrical diagram
viewer_linkLinks 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…No findings
Why it is in this group
- The name "viewer_link" says "link": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
- readOnlyHint: false
- title: Links to open the diagram and its PDF
wiringWiring 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 l…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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.
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
- title: Wire list, wire markers and cable schedule
Only reads 5Claude Code: allow
describeText outline of an electrical diagram: installation, full tree of the panel with stable ids, ratings and cables, links, interlocks, boards and findings summary.No findings
Why it is in this group
- The name "describe" says "describe": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
- title: Outline of an electrical diagram
get_exampleReturn an example installation document by name (or number prefix, e.g.No findings
Why it is in this group
- The name "get_example" says "get": a word for reading.
Description, as the server wrote it Return an example installation document by name (or number prefix, e.g. '02'), to adapt to the user's project.
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
- title: Get an example installation
get_reference_cardReference card of the uniwire format for electrical diagrams: document skeleton, node types (breakers, RCDs, cables, loads, transformers, PV...) and fields, enums, links, pitfalls,…No findings
Why it is in this group
- The name "get_reference_card" says "get": a word for reading.
Description, as the server wrote it 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'.
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
- title: Reference card of the uniwire format
list_examplesList the 52 example installations (dwellings, shops, offices, workshops, PV, EV charging, UPS, MV/LV substations, PLCs): name, title, language, profiles, earthing, system.No findings
Why it is in this group
- The name "list_examples" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
- title: List the example installations
list_typesList node types (type, category, label), optionally for one category: source, measure, protection, switching, control, converter, conductor, container, connector, load.No findings
Why it is in this group
- The name "list_types" says "list": a word for reading.
Description, as the server wrote it List node types (type, category, label), optionally for one category: source, measure, protection, switching, control, converter, conductor, container, connector, load.
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
- title: List the node types
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 0.1.1. Values in angle brackets are yours to fill in.
claude mcp add --transport http uniwire https://mcp.uniwire.sh/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__uniwire__get_reference_card",
"mcp__uniwire__list_types",
"mcp__uniwire__describe",
"mcp__uniwire__list_examples",
"mcp__uniwire__get_example"
],
"ask": [
"mcp__uniwire__type_info",
"mcp__uniwire__validate",
"mcp__uniwire__check",
"mcp__uniwire__apply_patch",
"mcp__uniwire__render",
"mcp__uniwire__viewer_link",
"mcp__uniwire__wiring",
"mcp__uniwire__bom",
"mcp__uniwire__normalize"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as uniwire. Review it before you use it.
