Digital Thread Connectors
The digital thread attaches customer systems such as MES, ERP, and PLM through connectors to link «what happened when, and what it connects to». This page organizes connectors by family — which tools each family must expose, where the digital thread uses them, and what to watch out for. For how to register, run conformance, and enable them from the UI, see Digital Thread.
From re-release (2026-10-20), the digital thread will not use connectors below the minimum versions listed below. Connectors attached with an earlier version must be upgraded → Upgrading versions
At a glance — the eleven families
| Family | UI name | Spec · min. version | Required tools | Action tools (🔒) | Freshness limit · sync | Where it is mainly used |
|---|---|---|---|---|---|---|
mes | MES | mes-mcp/0.7 | 7 | three | 2 h · 1 h | Job readiness · today's work · recovery plans · timeline — the base layer |
scm | SCM | mes-mcp/0.7 | 5 | two | 24 h · 12 h | Material readiness · PO thread · supply recovery |
sched | Scheduling (APS) | mes-mcp/0.7 | 2 | one | 2 h · 1 h | Baseline plan for recovery plans |
erp | ERP | erp-mcp/0.4 | 2 | none | 24 h · 12 h | People · qualifications, POs · receipts, customer orders, manufacturing BOM |
plm | PLM | plm-mcp/0.2 | 3 | none | 24 h · 12 h | Design changes · revision checks · BOM comparison |
qm | Quality | qm-mcp/0.2 | 3 | none | 24 h · 12 h | Quality readiness · nonconformance delays |
cmms | Maintenance (CMMS) | cmms-mcp/0.2 | 2 | none | 4 h · 2 h | Equipment readiness · maintenance window recovery |
tool | Tool management | tool-mcp/0.2 | 2 + features | none | 24 h · 12 h | Tool inspection · tool readiness |
wms | Warehouse (WMS) | wms-mcp/0.2 | 3 | none | 2 h · 1 h | Stock for late parts |
lims | Laboratory (LIMS) | lims-mcp/0.2 | 2 | none | 12 h · 6 h | Lot test results · fail events |
ehs | Safety (EHS) | ehs-mcp/0.3 | 2 + features | none | 1 h · 30 min | Work permit readiness · isolation windows |
scmandschedare different families on the same spec line as MES (mes-mcp). The rest each have their own spec.- MES is the base. Without MES, the entire job readiness verdict is «not attached», and the other families alone cannot produce an answer.
- Action tools exist only on the
mes-mcpline (MES · SCM · Scheduling). The other eight families are read-only.
Rules common to every connector
Only «keys» go into the mirror
The digital thread loads only keys and connections from what it reads via connectors into the factory graph mirror — «work order WO-1 runs on equipment M-3». Values such as names, quantities, dates, and statuses are not stored; they are re-read through the connector's read tools when a question comes in. So if a connector goes down, values are missing from the answer, and if a value changes in the source system, the next question returns the changed value right away.
Tool response rules (spec 0.2)
| Rule | Value |
|---|---|
| Size of a single response | 16,000 characters or less |
| Page size | limit 1 – 200 (default 50), next page via cursor |
| Time window | Up to 31 days. Exceptions — supplier delivery performance, equipment maintenance history, and calibration records allow 366 days |
| Error codes | invalid_argument · not_found · unauthorized · rate_limited · unavailable · conflict |
| «Unknown» marking | unknown_fields on a row; partial (partially read) · unreadable (rows not read) on a response. Do not guess unknown values — return null |
| Time | ISO 8601 with a time zone offset. Times without an offset are read as «unknown» |
- A call for «give me everything» with no conditions must be rejected with
invalid_argument— the conformance test checks this. - A query with an unknown equipment ID must return
not_found, not an empty list.
Sync and freshness
- The digital thread syncs each connector at half the family freshness limit (minimum 5 minutes; see the table above). If you set
DT_CONNECTOR_SYNC_INTERVAL_S, every connector uses that interval. The first sync runs 2 minutes after startup. - Each run reads a window of now ±15 days. Connections that do not appear in this window are not deleted but closed (they remain in the connection history, 180 days by default). Record-type connections such as production results, genealogy, and inspections are never closed.
- If a response was truncated (
truncated) or only partially read (partial), that run closes no connections at all. - If the last sync is older than the freshness limit, recovery plans do not compute numbers from that data and instead flag it as a «stale input». The limit can be changed per family via
DT_CONNECTOR_MAX_AGE. - Families with an event tool load events as timeline references after a sync (without the body). Re-reading the same event does not create duplicates, and each run is capped at 5,000 events.
Call limits
If a connector declares capabilities.limits.rate_limit_per_min, the digital thread calls only within that limit.
Unattended calls such as sync and conformance use only up to 80% of the limit (waiting at most 10 minutes), while interactive calls such as chat wait at most 20 seconds.
If a connector returns Retry-After, it is honored for up to one hour. With no declaration, no queueing is applied.
Align the site with MES
A connector is registered to a single site. A family whose site differs from that plant's MES is excluded from the verdict and leaves site_mismatch:<family> in the answer (PLM is the only exception — design data is not plant-specific).
🔴 If you register a company-wide ERP under the head-office site, that plant's verdict excludes ERP. Register it per plant, under the same site as that plant's MES.
Jump straight to the source screen (deep links)
If you configure a link template per connector (links — base_url · label · allow_http · templates), objects in connection · timeline · impact scope · node detail answers
get open_url · open_label, and a button such as "Open in SAP" appears in the copilot evidence panel. The button text is label (the connector name if empty).
The template supports only three placeholders — {base} · {key} · {key.1} ~ {key.9} — defaults to https only (http too with allow_http: true), and the resulting host must match the host in base_url. Changing the link template leaves conformance and enabled state untouched. Without a template, the link column simply does not appear.
How to enter them in the console (Integration map › connector side panel › External links) is in Digital Thread — External links.
Node detail — the read tool called on every click
When you click a node in the copilot evidence panel (current values in the source system), the Digital Thread calls the tool below once on that kind's system-of-record family connector. The values are stored neither in the mirror nor in the service, and only the fields set for each kind are carried (people's names · employee numbers · contact details are not carried). If one call exceeds 15 seconds, it is «No response from the source system».
| Kind | Family | Tool called |
|---|---|---|
| PO line | ERP | erp_list_purchase_orders |
| Sales order line | ERP | erp_list_sales_orders |
| Work order · operation | MES | mes_get_work_order (an operation via its parent work order) |
| Part | PLM | plm_get_bom |
| Supplier | SCM | scm_get_supplier_delivery_performance (last 90 days) |
- Inspections · nonconformances (QM) and maintenance orders (CMMS) are «Unknown» because the specs have no single-record read — their list tools take only a time window and cannot filter by number.
- The order for picking a connector is the same as for links — among enabled system-of-record family connectors with a matching version, the one at the same site as the node (PLM is exempt from the site match) → the primary → the one registered first.
Upgrading versions — anything below the minimum is not used
- A connector declaring a version below the minimum in the table above is refused for sync (409
connector_outdated) and counts as «not attached» in verdicts and recovery plans.connector_outdated:<family>is listed under «what is missing» in the answer, and the registry showsspec_status: outdatedalong with the version to upgrade to (upgrade_to). - After upgrading a connector to a new version, repeat tool discovery → conformance test → enable → sync. When the version changes, tool discovery disables the connector and clears the conformance result.
- With multiple connectors,
bin/reregister-connectors.shwalks these steps for each connector on your behalf (MES first, then SCM · Scheduling · ERP). Preview it with--dry-run.
Running the conformance test externally
Connector developers can run the same test without the digital thread.
python -m app.connectors.conformance_cli <connector MCP URL> --family <family>
One test run must finish within 15 minutes (time spent waiting due to call limits is not counted). Transient disconnections do not change the record; only confirmed failures are recorded and disable the connector.
MES — work orders · operations · production results
Spec mes-mcp 0.7 · Family mes · Freshness limit 2 h (sync every hour) · the base of the digital thread
| Tool | Required | What it does | Key inputs |
|---|---|---|---|
mes_capabilities | ✅ | Declares version · site · limits | — |
mes_list_equipment | ✅ | Mapping of MES equipment ↔ platform assets (asset_id), equipment hierarchy | asset_id · equipment_id |
mes_list_work_orders | ✅ | Work orders by equipment and period — status · item · quantity · planned/actual times · due date · milestones · sales project (0.4) · customer order lines (0.7) | asset_id or from · to, status, due_before |
mes_get_work_order | ✅ | Operations and BOM lines of one work order | work_order_id |
mes_list_production_results | ✅ | Production results — good · defective · scrapped, lots · serial numbers | from · to |
mes_list_downtime_events | ✅ | Downtime and reasons | from · to |
mes_events | ✅ | Event envelopes — loaded into the timeline | from · to, types |
mes_get_genealogy | Optional | Lot · serial number genealogy (up to 3 levels each way) | direction |
mes_get_precedence | Optional | Operation predecessor/successor graph and slack | direction, depth 1–5 |
mes_list_maintenance_history · mes_list_nonconformances · mes_list_personnel | Optional | Maintenance history · nonconformances · people and qualifications — fallback sources when CMMS · QM · ERP are absent | Period |
mes_get_operation_requirements | Optional | Eligible equipment per operation · required qualifications · setup groups | work_order_id |
mes_list_calendars · mes_list_maintenance_windows · mes_get_power_limit | Optional | Equipment and people calendars (including setup changeovers), planned maintenance windows, site concurrent power limit — resource constraints for recovery plans | Period |
mes_get_mbom | Optional | Manufacturing BOM — when MES/MPM is the system of record (0.6) | material_id |
🔒 Action tools — called only after a person approves on a copilot suggestion card. They merely create a «draft · request» in the source system; confirmation is done by a person inside that system.
| Tool | What it creates |
|---|---|
mes_create_work_order_draft | Work order draft (item · quantity · equipment · start · due date) |
mes_create_hold_request | Hold / release request for a work order · lot · serial number |
mes_create_maintenance_request | Maintenance request (equipment · priority · failure code · evidence link) |
- What goes into the mirror — equipment → platform equipment · parent equipment, work order → equipment · milestone · project · customer order line, operation → work order · equipment · required qualifications, BOM line → part number, predecessor/successor, result lot → equipment · work order, genealogy, manufacturing BOM. Quantities, times, calendars, maintenance windows, power, and stop reasons are read on demand.
Where it is used
| Feature | How it is used |
|---|---|
| Job readiness | Work orders and operations are the backbone of the verdict. Without them the whole verdict is «not attached». Without operation requirements, the staffing item is «unknown» |
Today's work (thread_today_work) | Operations planned for today and equipment status |
Recovery plans (thread_explain_recovery) | Work orders · predecessor/successor · resources (calendars · maintenance windows · power) · manufacturing BOM |
| Timeline · impact scope | mes_events and genealogy |
A cycle in the equipment parent chain fails. If a work order returns wbs_parent_id, it must also return project. Required read tools must be under 2 s at p95.
SCM — purchasing · receipts · suppliers
Spec mes-mcp 0.7 · Family scm · Freshness limit 24 h (sync every 12 h)
| Tool | Required | What it does | Key inputs |
|---|---|---|---|
scm_capabilities | ✅ | Declares version · site · limits | — |
scm_list_supply_lines | ✅ | Open purchase · supply lines — ordered · received · open quantities, requested · promised · confirmed dates, dependent work orders · customer orders | One of part number · work order · supplier |
scm_list_inbound_shipments | ✅ | Advance shipping notices (ASN) — expected arrival · transport status | from · to |
scm_list_goods_receipts | ✅ | Receipts and inspection status | from · to |
scm_get_work_order_shortage | ✅ | Shortages for one work order — required · available · incoming · short per part number, next arrival date | work_order_id |
scm_events | Optional | Event envelopes | from · to |
scm_get_supplier_delivery_performance | Optional | Supplier on-time delivery rate · average / p90 delay (up to 366 days) | supplier_id |
scm_list_alternates | Optional | Alternate parts · alternate suppliers | material_id |
scm_list_incoming_inspections · scm_list_supplier_nonconformances | Optional | Incoming inspection results · supplier part nonconformances | Period |
scm_list_supplier_capacity | Optional | Supplier capacity (transport days · capacity by period) | Supplier or part number |
🔒 Action tools
| Tool | What it creates |
|---|---|
scm_create_expedite_request_draft | Expedite request draft (PO line · required date) — the buyer sends it from the source system |
scm_create_supplier_inquiry_draft | Supplier inquiry draft (delivery · quality, up to 1,000 characters) |
- What goes into the mirror — PO line → supplier · part number · dependent work order · customer order line, receipt lot → supplier. Supply lines are read narrowed to the suppliers appearing in shipments and receipts (because the SCM spec blocks bulk queries).
Where it is used — material readiness (shortages), PO thread, recovery plans (shortages · shipments · supplier capacity — without capacity, the supply side answers «impact only»), and the PO column in today's work.
Scheduling (APS) — the published plan
Spec mes-mcp 0.7 · Family sched · Freshness limit 2 h (sync every hour)
| Tool | Required | What it does | Key inputs |
|---|---|---|---|
sched_capabilities | ✅ | Declares version · site | — |
sched_events | ✅ | Milestone · planned date change events | from · to |
sched_list_planned_operations | Optional | Operation schedule of the published plan — plan version · equipment · planned times · setup · freeze · sequence | from · to |
sched_get_resource_calendars | Optional | Shifts and planned stops per equipment | from · to |
sched_list_scenarios | Optional | List of scenarios (what-if plans) and KPIs | status |
🔒 Action tool — sched_create_scenario_draft: creates the operation moves from a recovery plan (up to 200) as a scenario draft in APS. It does not publish a plan — evaluation and publishing are done by a person inside APS.
Used as the baseline plan for recovery plans. It reads the published plan from yesterday through the next 15 days and overrides the planned times of the predecessor/successor network with the APS values. Operations that are finished or in progress are not overridden (actuals beat the plan). Frozen operations are pinned to their times, but if a predecessor runs late and the operation cannot start at that time, it is not pinned and this is noted under «assumptions». Without APS, the baseline is the MES work assignment, and «APS plan unknown» is listed under «what was not considered» in the answer.
ERP — people · purchasing · customer orders · manufacturing BOM
Spec erp-mcp 0.4 · Family erp · Freshness limit 24 h (sync every 12 h) · read-only
| Tool | Required | What it does | Key inputs |
|---|---|---|---|
erp_capabilities | ✅ | Declares version · site | — |
erp_list_personnel | ✅ | People (pseudonymous IDs) · qualifications · assignments | on_date, qualification_code |
erp_list_availability | Optional | Availability windows for people — shifts · leave · overtime | from · to |
erp_get_mbom | Optional | Manufacturing BOM — when ERP is the system of record | material_id |
erp_list_purchase_orders | Optional | Material purchase order lines (open by default) — dependent operations · customer order lines | Empty returns all open lines |
erp_list_goods_receipts | Optional | Receipts | from · to |
erp_list_sales_orders | Optional | Customer order lines — customer · customer PO · contract due date · confirmed date · liquidated damages · linked project · milestone · work order | Empty returns all open lines |
- People enter the mirror only as pseudonymous IDs. Names and qualification expiry dates are read on demand.
- What goes into the mirror — person → qualifications · assigned work orders · operations, PO line → supplier · part number · work order · customer order line, customer order line → customer, project · milestone · work order → customer order line, manufacturing BOM. If ERP and SCM refer to the same PO line number, it is the same line in the mirror.
When ERP and SCM are both present — for the due date, SCM's supplier-confirmed date wins if present, otherwise ERP's. Status and open quantity come from ERP as the system of record, and dependent work orders are merged from both sides. Where values disagree, both are listed under «discrepancies» in the answer.
Where it is used
| Feature | How it is used |
|---|---|
| Job readiness — staffing · materials | Staffing comes from ERP first (MES if absent). Customers without SCM can still judge materials from the open and dependent lines of ERP purchase orders |
| Order context | The customer order each operation fulfills, and days of slack |
| Recovery plans | People resources · POs · days of slack on customer orders |
| BOM comparison | The ERP manufacturing BOM is checked first (MES if absent) |
A customer order line returning none of the project · milestone · work order keys is informational, not a failure (it simply is not linked to shop-floor work). Duplicate order line numbers are a failure.
PLM — design changes and BOM
Spec plm-mcp 0.2 · Family plm · Freshness limit 24 h (sync every 12 h) · all read-only
| Tool | Required | What it does | Key inputs |
|---|---|---|---|
plm_capabilities | ✅ | Declares version · site · features | — |
plm_list_change_orders | ✅ | Engineering change orders (ECO · ECN) — status · affected part numbers and revisions · stock disposition · effectivity · time from which the new revision may be used | from · to (based on change time, required), material_id, status[] |
plm_get_bom | ✅ | Design BOM for one part revision — child part numbers (lines) and where the part is used (where_used) | material_id (required), revision (empty means the current released revision). Paged from 0.2 (limit up to 200) |
plm_list_documents | Optional | Document · drawing metadata attached to a part (name · type · revision · status · open link). File contents are not returned | material_id (required), revision |
- Change order statuses are
draft·in_review·approved·released·design_released(0.2) ·implemented·cancelled, stock dispositions arepending·use_as_is·rework·scrap·none, and effectivity types areimmediate·date·unit·serial. - What goes into the mirror — only keys and connections of change orders, part numbers, and documents (change order → part number, child part → parent part, document → part number). The BOM is walked upward up to 4 levels from the affected part. Statuses, dates, document names, and links are not stored and are read on demand.
- Timeline events — change order modified · released · status changed (0.2). They attach to the affected part numbers.
Where it is used
| Feature | How it is used |
|---|---|
Recovery plans (thread_explain_recovery) | Among change orders from the last 30 days through tomorrow, only approved · released ones become constraints. If the stock disposition is use_as_is it does not block; if it is rework · scrap · none it blocks that part until the «time the new revision may be used». design_released is shown only and does not block |
| Job readiness — drawing item | If change orders cannot be read, this item is «unknown»; without a BOM the verdict scope narrows |
Revision check (thread_part_revision_status) | Looks at the current released revision and open changes (93 days) and answers with current · outdated · change_open · unknown |
| BOM comparison · impact scope | Compares the design BOM against the manufacturing BOM and actuals → Manufacturing BOM above |
Returning next_cursor together in a BOM response whose direction is truncated: true fails. A document's open_url must be an http(s) link (data: is not allowed).
QM — inspections and nonconformances
Spec qm-mcp 0.2 · Family qm · Freshness limit 24 h (sync every 12 h) · all read-only
| Tool | Required | What it does | Key inputs |
|---|---|---|---|
qm_capabilities | ✅ | Declares version · site | — |
qm_list_inspections | ✅ | Inspection lots — incoming · in-process · final inspection, results (passed · failed · conditional · pending), linked nonconformance numbers | from · to (required), material_id · lot_id · work_order_id |
qm_list_nonconformances | ✅ | Nonconformances (NCR) — defect · quantity · disposition (rework · scrap · return …) · rework plan · expected replacement time | from · to (detection time, required), part number · lot · work order · supplier · status[] |
- What goes into the mirror — keys and connections of NCRs and inspections: NCR → part number · lot · serial number, NCR → blocked work order · operation, lot → inspection, lot → supplier.
- Timeline events — nonconformance raised · rework completed, inspection pass · fail · conditional (
pendingis not an event).
Where it is used
| Feature | How it is used |
|---|---|
| Recovery plans | If the disposition is rework or repair, it blocks until the end of the rework plan; if scrap or return, until the expected replacement time. Without a time, no number is produced and it is left as «unknown» |
| Job readiness — quality item | QM is checked first; if absent, MES nonconformances (mes_list_nonconformances) are used |
Tool inspection (thread_check_tooling) | Read alongside when looking for candidate causes of a nonconformance |
CMMS — maintenance
Spec cmms-mcp 0.2 · Family cmms · Freshness limit 4 h (sync every 2 h) · all read-only
| Tool | Required | What it does | Key inputs |
|---|---|---|---|
cmms_capabilities | ✅ | Declares version · site | — |
cmms_list_work_orders | ✅ | Maintenance work orders — type (preventive · breakdown repair · predictive · inspection · calibration) · 7 status stages · planned/actual times · whether equipment is stopped · spare parts used · production work orders waiting | from · to (required), equipment_id · asset_id · type[] · status[] · open_only |
cmms_list_pm_schedules | Optional | Windows in which preventive maintenance stops equipment — duration · earliest start · latest finish · whether it can be moved (movable) | from · to (required), equipment |
cmms_get_asset_history | Optional | Maintenance history summary for one piece of equipment (count · failures · MTBF · MTTR · downtime) | from · to (up to 366 days), equipment |
- What goes into the mirror — maintenance work order numbers and connections: maintenance → equipment (directly to platform equipment if a platform asset ID exists), maintenance → spare parts, maintenance → waiting production work orders. In addition to work orders inside the window, those that started before it and are still open are also read.
- Timeline events — maintenance requested · started · finished, preventive maintenance planned. Work orders with no time at all stay as «no time» without an event.
Where it is used
| Feature | How it is used |
|---|---|
| Recovery plans | Reads preventive maintenance windows and open work orders from yesterday through the next 15 days. Unfinished breakdown repairs block the equipment until their expected end, and preventive maintenance that cannot be moved blocks it too. Movable preventive maintenance is shifted within the schedule by the optimizer. Without CMMS, the maintenance schedule is listed under «what was not considered» in the answer |
| Job readiness — equipment item | «Unknown» if both the preventive maintenance windows and work orders are absent |
| Safety (EHS) cross-check | Compares maintenance work orders against work permits and isolations |
| Anomaly case labels | Labels anomaly cases from completed breakdown repair work orders (DT_WO_LABELS_ENABLED) |
- If the same maintenance window also exists in MES, CMMS wins.
TOOL — tools · jigs · measuring instruments
Spec tool-mcp 0.2 · Family tool · Freshness limit 24 h (sync every 12 h) · all read-only
Tool management systems vary widely in what they do, so a connector declares features and exposes only the tools for those features. A system that only does calibration can declare just calibration.
| Feature | Tools exposed | Register columns it fills |
|---|---|---|
inventory | (register only) | Quantity |
issue_return | tool_list_issues — issue · return (who · to which work order · operation · inspection · lot) | — |
calibration | tool_list_calibrations — calibration records (pre- and post-calibration verdict, maximum error, next due date). Up to 366 days | Calibration |
tool_life | tool_list_life_events — regrind · replacement · end of life · life warning | Life |
presetting | tool_list_requirements — list of tools required by a work order · operation | Preset |
- The always-exposed tools are
tool_capabilitiesandtool_list_tools(the register of tools · jigs · measuring instruments — statusesavailable·issued·in_calibration·out_of_tolerance·quarantined·worn_out·retired). The event tooltool_eventsis optional and independent of features. - 🔴 You must expose all tools of a declared feature, must not expose tools of an undeclared feature, and must leave the corresponding register columns empty — the conformance test checks this.
- What goes into the mirror — tool keys and connections: tool → equipment it is mounted on, work order · operation · inspection · lot · serial number → tools actually used. Life, calibration, and quantity values are not stored.
- Timeline events — issue · return · calibration pass/fail · end of life · replacement. Without
tool_events, only calibration events are created from calibration records.
Where it is used
| Feature | How it is used |
|---|---|
Tool inspection (thread_check_tooling) | Answers three things — suspect measurements (measured with an instrument past its calibration due date, or one that failed calibration after use), tools actually used, and candidate causes of a nonconformance (life · issue · QM nonconformance). Lookup period 1–31 days (default 30), calibration records are checked up to a year back |
| Job readiness — tooling item | «Unknown» if either the required tool list or the register is missing |
WMS — warehouse stock and movements
Spec wms-mcp 0.2 · Family wms · Freshness limit 2 h (sync every hour) · read-only
| Tool | Required | What it does | Key inputs |
|---|---|---|---|
wms_capabilities | ✅ | Declares version · site | — |
wms_list_stock | ✅ | Stock — on hand · reserved · available per part number · location · lot, stock status (as of as_of) | material_id · location_id (unconditional "all" is rejected) |
wms_list_movements | ✅ | Stock movements — receipt · issue · transfer · adjustment · return | from · to (required), part number · work order |
- Nothing goes into the mirror. Stock changes by the hour, so it is read on demand.
- Timeline events — a receipt · issue · transfer · adjustment · return event per movement.
- Where it is used — recovery plans show warehouse stock (available · on hand · reserved · held · under inspection) alongside each late part. If only partially read, a part number with no row is «unknown», not 0. Without WMS, stock is listed under «what was not considered» in the answer.
LIMS — samples and test results
Spec lims-mcp 0.2 · Family lims · Freshness limit 12 h (sync every 6 h) · read-only
| Tool | Required | What it does | Key inputs |
|---|---|---|---|
lims_capabilities | ✅ | Declares version · site | — |
lims_list_samples | ✅ | Samples and test results — part number · lot · serial number · supplier · work order · inspection, status (registered · in_testing · completed · cancelled), overall verdict | from · to (sampling time, required), part number · lot · status |
- What goes into the mirror — sample → lot · serial number (part number if absent) · work order · inspection, lot → supplier. Test values, specifications, and verdicts are not stored.
- Timeline events — pass · fail per adjudicated sample. Samples awaiting a verdict are not events.
- Where it is used — attaches test results to lots and traces impact scope starting from a sample. A LIMS failure is not promoted to a QM nonconformance — QM is the system of record for nonconformances.
EHS — work permits · isolation · safety
Spec ehs-mcp 0.3 · Family ehs · Freshness limit 1 h (sync every 30 min — the shortest of all families) · read-only
The always-exposed tools are ehs_capabilities and ehs_events (permit approved · started · suspended · closed, isolation applied · removed, incident reported, inspection completed, risk assessment expired);
the rest, as with tool management, are exposed per declared feature.
| Feature | Tool | What it does |
|---|---|---|
permits | ehs_list_permits | Work permits — type · status · equipment · area · work order · maintenance work order · operation, validity period, whether isolation is required |
isolations | ehs_list_isolations | Isolation (LOTO) — isolation points · permit · planned/applied/verified/removed times |
incidents | ehs_list_incidents | Incident references — accident · near miss · unsafe condition · environmental release, severity grade |
inspections | ehs_list_inspections | Safety inspections — number of findings · open actions |
risk_assessments | ehs_list_risk_assessments | Risk assessments — approval date · review due date |
training | ehs_list_training | Role qualifications (training) — pseudonymous ID · validity period |
- 🔴 Why 0.3 is the minimum version — from 0.3, maintenance work orders are received separately (
maintenance_order_ids).work_order_*means MES work orders only. Because a 0.2 connector putting maintenance numbers into the work order field created work orders that do not exist in the mirror, anything below 0.3 is not synced. - 🔴 No personal data is accepted. There are no fields for incident narratives, injuries, or personal details, and adding such fields fails the conformance test. People appear only as pseudonymous IDs.
- What goes into the mirror — permit → equipment · area · work order · maintenance work order · operation, isolation → equipment · permit, incident → equipment · area · work order · maintenance. Inspections, risk assessments, and qualifications are read on demand.
Where it is used
| Feature | How it is used |
|---|---|
| Job readiness — permit item | Reports reasons such as no permit, no permit covering the operation, or required isolation missing |
| Permit coverage check | Whether permits · isolations have gaps for work and maintenance in a given period (default 7 days, max 31), and whether risk assessment reviews are overdue |
| Recovery plans | Adds isolation periods as windows in which the equipment is unavailable. Permits that are not yet approved or are suspended are flagged as «reference» only |
- Role qualifications (
training) are read but not yet used in verdicts. There is no chat tool.
Commercial product adapters — pre-validation stage
Four adapters are available for commonly used commercial products. All four have passed conformance testing against a mock server and have not been validated against the actual products — they are validated together in the customer environment during deployment. All are read-only.
| Product | Family · version | Tools exposed | Product-side interface | Authentication |
|---|---|---|---|---|
| SAP S/4HANA | ERP erp-mcp/0.4 · Maintenance cmms-mcp/0.2 (registered separately per family) | ERP: people · purchase orders · receipts · customer orders (availability windows · manufacturing BOM not yet available). Maintenance: all four | OData V2 standard APIs (purchase orders · material documents · sales orders · maintenance orders · maintenance plans · equipment, etc.) | OAuth2 client credentials or basic |
| IBM Maximo (Manage · 7.6) | Maintenance cmms-mcp/0.2 | All four | REST (OSLC JSON) — work orders · preventive maintenance · assets | API key (MAS) · maxauth (7.6) · basic |
| Siemens Teamcenter | PLM plm-mcp/0.2 | All four (including documents) | SOA JSON — saved queries · BOM windows · where-used | Session login (user · password) |
| Dassault 3DEXPERIENCE | PLM plm-mcp/0.2 | All four (including documents) | 3DPassport login → 3DSpace change · engineering · document APIs | User · password + security context |
- Adapters run on the customer side as containers separate from the digital thread and are registered in the digital thread with an endpoint and token like any other connector. If the token is empty, the adapter refuses to start.
- Source system addresses must be https only. Secrets can be supplied as a file (
…_FILE) instead of a value. - Each adapter declares a per-minute call limit (e.g., Teamcenter 40/min, 3DEXPERIENCE 25/min). If the source system rejects the credentials, it pauses for 5 to 60 minutes before retrying.
- There are no commercial adapters yet for the MES, Quality, Tool, Warehouse, Laboratory, and Safety families. For those families, build a connector that follows the specs above.
For connector developers
- The spec text lives in the digital thread source under
app/connectors/spec/<spec>-<version>/as JSON per tool. A new version contains only what is added on top of the previous one. - Remove from the list any tool for a feature you do not provide. A tool returning an empty response is read as «feature present, no data».
- Report unknown values with
nullandunknown_fields. Filling them with 0 or an empty string makes them read as a «measured 0» and produces wrong verdicts. - Honor
readOnlyHint: trueon read tools and the 31-day limit on tools with a time window. - Event IDs must be stable across re-reads — the timeline uses them to filter duplicates.
Related documents
- Digital Thread — registration UI · binding · sync · graph mirror · chat tools
- MCP tool map — the
thread_tools called by chat - Changing passwords · API keys —
PI_DT_SECRET_KEY, which encrypts connector credentials