protogrid

Search / io.github.uniwire-dev/uniwire

uniwire

R0· no sign-in

Electrical single-line and multi-line diagrams: build, check (NF C 15-100, IEC 60364), draw, PDF.

v0.1.1 · active · repository · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality96strong
Trust97of 100
Uptime, 30 days100%
Latency p50569 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "uniwire": {
      "type": "http",
      "url": "https://mcp.uniwire.sh/mcp"
    }
  }
}
claude mcp add --transport http uniwire https://mcp.uniwire.sh/mcp
[mcp_servers.uniwire]
url = "https://mcp.uniwire.sh/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "uniwire": {
      "type": "remote",
      "url": "https://mcp.uniwire.sh/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "uniwire": {
      "type": "http",
      "url": "https://mcp.uniwire.sh/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=uniwire&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vbWNwLnVuaXdpcmUuc2gvbWNwIn0%3D"
}
{
  "servers": {
    "uniwire": {
      "type": "http",
      "url": "https://mcp.uniwire.sh/mcp"
    }
  }
}
{
  "mcpServers": {
    "uniwire": {
      "httpUrl": "https://mcp.uniwire.sh/mcp"
    }
  }
}
extensions:
  "uniwire":
    enabled: true
    name: "uniwire"
    type: streamable_http
    uri: "https://mcp.uniwire.sh/mcp"
    timeout: 300

Quality 96 / 100strong

protocol88 · weight 25
  • pass
    protocol.modernsupports 2026-07-28 (server/discover)
  • pass
    protocol.statelessanswers without a session
  • pass
    protocol.transportstreamable HTTP
  • warn
    protocol.list_ttltools/list declares ttlMs 0, so clients re-fetch it on every use
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene100 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations14 of 14 tools declare readOnlyHint or destructiveHint
  • pass
    tools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
  • pass
    tools.token_costabout 2,519 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability100 · weight 15
  • pass
    stability.changes5 tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

14 tools, about 2,519 tokens to load them all · tool set 4a3e7043da03 · tools last changed 2026-10-13 · checked 2026-10-20 09:31 UTC

Tool changes

  • viewer_linkchangeddescription, annotations
    before

    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 opens it and downloads the PDF drawn by uniwire. The document travels in the link (after '#') and is stored nowhere. Give them to the user as clickable Markdown links.

    after · 71% of words in common

    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.

  • renderchangedannotations
  • apply_patchchangedannotations
  • checkchangeddescription, annotations
    before

    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 (same, and downloads 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.

    after · 99% of words in common

    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.

  • validatechangedannotations

Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 97 / 100

provenance90
liveness100
freshness100
hygiene100

+repository +namespace-matches-repo +website +reachable +uptime-100% +updated-7d-ago

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://mcp.uniwire.sh/mcp streamable-httpnoneyes100%569 ms2026-07-282026-10-20

Tools (14)

apply_patchEdit 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).
bomread-onlyBill of materials of an electrical installation (nomenclature), grouped by manufacturer / part number (nodes with a product reference).
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', 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.
describeread-onlyText 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.
get_exampleread-onlyReturn an example installation document by name (or number prefix, e.g. '02'), to adapt to the user's project.
get_reference_cardread-onlyReference 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'.
list_examplesread-onlyList 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.
list_typesread-onlyList node types (type, category, label), optionally for one category: source, measure, protection, switching, control, converter, conductor, container, connector, load.
normalizeread-onlyResolved document: templates applied, every id assigned, canonical numbers.
renderDraw 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'.
type_inforead-onlyAll fields of a node type with descriptions and allowed values (enums).
validateValidate 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.
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 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.
wiringread-onlyWiring 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.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "io.github.uniwire-dev/uniwire",
  "title": "uniwire",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://mcp.uniwire.sh/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "0.1.1",
  "repository": {
    "url": "https://github.com/uniwire-dev/uniwire",
    "source": "github"
  },
  "websiteUrl": "https://uniwire.sh/docs/assistants/",
  "description": "Electrical single-line and multi-line diagrams: build, check (NF C 15-100, IEC 60364), draw, PDF."
}