Skip to main content

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.

This page reflects the 2026.10 re-release (2026-10-20)

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​

FamilyUI nameSpec · min. versionRequired toolsAction tools (🔒)Freshness limit · syncWhere it is mainly used
mesMESmes-mcp/0.77three2 h · 1 hJob readiness · today's work · recovery plans · timeline — the base layer
scmSCMmes-mcp/0.75two24 h · 12 hMaterial readiness · PO thread · supply recovery
schedScheduling (APS)mes-mcp/0.72one2 h · 1 hBaseline plan for recovery plans
erpERPerp-mcp/0.42none24 h · 12 hPeople · qualifications, POs · receipts, customer orders, manufacturing BOM
plmPLMplm-mcp/0.23none24 h · 12 hDesign changes · revision checks · BOM comparison
qmQualityqm-mcp/0.23none24 h · 12 hQuality readiness · nonconformance delays
cmmsMaintenance (CMMS)cmms-mcp/0.22none4 h · 2 hEquipment readiness · maintenance window recovery
toolTool managementtool-mcp/0.22 + featuresnone24 h · 12 hTool inspection · tool readiness
wmsWarehouse (WMS)wms-mcp/0.23none2 h · 1 hStock for late parts
limsLaboratory (LIMS)lims-mcp/0.22none12 h · 6 hLot test results · fail events
ehsSafety (EHS)ehs-mcp/0.32 + featuresnone1 h · 30 minWork permit readiness · isolation windows
  • scm and sched are 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-mcp line (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)​

RuleValue
Size of a single response16,000 characters or less
Page sizelimit 1 – 200 (default 50), next page via cursor
Time windowUp to 31 days. Exceptions — supplier delivery performance, equipment maintenance history, and calibration records allow 366 days
Error codesinvalid_argument · not_found · unauthorized · rate_limited · unavailable · conflict
«Unknown» markingunknown_fields on a row; partial (partially read) · unreadable (rows not read) on a response. Do not guess unknown values — return null
TimeISO 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.

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».

KindFamilyTool called
PO lineERPerp_list_purchase_orders
Sales order lineERPerp_list_sales_orders
Work order · operationMESmes_get_work_order (an operation via its parent work order)
PartPLMplm_get_bom
SupplierSCMscm_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 shows spec_status: outdated along 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.sh walks 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

ToolRequiredWhat it doesKey inputs
mes_capabilities✅Declares version · site · limits—
mes_list_equipment✅Mapping of MES equipment ↔ platform assets (asset_id), equipment hierarchyasset_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 orderwork_order_id
mes_list_production_results✅Production results — good · defective · scrapped, lots · serial numbersfrom · to
mes_list_downtime_events✅Downtime and reasonsfrom · to
mes_events✅Event envelopes — loaded into the timelinefrom · to, types
mes_get_genealogyOptionalLot · serial number genealogy (up to 3 levels each way)direction
mes_get_precedenceOptionalOperation predecessor/successor graph and slackdirection, depth 1–5
mes_list_maintenance_history · mes_list_nonconformances · mes_list_personnelOptionalMaintenance history · nonconformances · people and qualifications — fallback sources when CMMS · QM · ERP are absentPeriod
mes_get_operation_requirementsOptionalEligible equipment per operation · required qualifications · setup groupswork_order_id
mes_list_calendars · mes_list_maintenance_windows · mes_get_power_limitOptionalEquipment and people calendars (including setup changeovers), planned maintenance windows, site concurrent power limit — resource constraints for recovery plansPeriod
mes_get_mbomOptionalManufacturing 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.

ToolWhat it creates
mes_create_work_order_draftWork order draft (item · quantity · equipment · start · due date)
mes_create_hold_requestHold / release request for a work order · lot · serial number
mes_create_maintenance_requestMaintenance 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

FeatureHow it is used
Job readinessWork 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 scopemes_events and genealogy
Common conformance failures

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)

ToolRequiredWhat it doesKey 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 ordersOne of part number · work order · supplier
scm_list_inbound_shipments✅Advance shipping notices (ASN) — expected arrival · transport statusfrom · to
scm_list_goods_receipts✅Receipts and inspection statusfrom · to
scm_get_work_order_shortage✅Shortages for one work order — required · available · incoming · short per part number, next arrival datework_order_id
scm_eventsOptionalEvent envelopesfrom · to
scm_get_supplier_delivery_performanceOptionalSupplier on-time delivery rate · average / p90 delay (up to 366 days)supplier_id
scm_list_alternatesOptionalAlternate parts · alternate suppliersmaterial_id
scm_list_incoming_inspections · scm_list_supplier_nonconformancesOptionalIncoming inspection results · supplier part nonconformancesPeriod
scm_list_supplier_capacityOptionalSupplier capacity (transport days · capacity by period)Supplier or part number

🔒 Action tools

ToolWhat it creates
scm_create_expedite_request_draftExpedite request draft (PO line · required date) — the buyer sends it from the source system
scm_create_supplier_inquiry_draftSupplier 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)

ToolRequiredWhat it doesKey inputs
sched_capabilities✅Declares version · site—
sched_events✅Milestone · planned date change eventsfrom · to
sched_list_planned_operationsOptionalOperation schedule of the published plan — plan version · equipment · planned times · setup · freeze · sequencefrom · to
sched_get_resource_calendarsOptionalShifts and planned stops per equipmentfrom · to
sched_list_scenariosOptionalList of scenarios (what-if plans) and KPIsstatus

🔒 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

ToolRequiredWhat it doesKey inputs
erp_capabilities✅Declares version · site—
erp_list_personnel✅People (pseudonymous IDs) · qualifications · assignmentson_date, qualification_code
erp_list_availabilityOptionalAvailability windows for people — shifts · leave · overtimefrom · to
erp_get_mbomOptionalManufacturing BOM — when ERP is the system of recordmaterial_id
erp_list_purchase_ordersOptionalMaterial purchase order lines (open by default) — dependent operations · customer order linesEmpty returns all open lines
erp_list_goods_receiptsOptionalReceiptsfrom · to
erp_list_sales_ordersOptionalCustomer order lines — customer · customer PO · contract due date · confirmed date · liquidated damages · linked project · milestone · work orderEmpty 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

FeatureHow it is used
Job readiness — staffing · materialsStaffing 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 contextThe customer order each operation fulfills, and days of slack
Recovery plansPeople resources · POs · days of slack on customer orders
BOM comparisonThe ERP manufacturing BOM is checked first (MES if absent)
Common conformance failures

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

ToolRequiredWhat it doesKey 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 usedfrom · 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_documentsOptionalDocument · drawing metadata attached to a part (name · type · revision · status · open link). File contents are not returnedmaterial_id (required), revision
  • Change order statuses are draft · in_review · approved · released · design_released (0.2) · implemented · cancelled, stock dispositions are pending · use_as_is · rework · scrap · none, and effectivity types are immediate · 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

FeatureHow 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 itemIf 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 scopeCompares the design BOM against the manufacturing BOM and actuals → Manufacturing BOM above
Common conformance failures

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

ToolRequiredWhat it doesKey inputs
qm_capabilities✅Declares version · site—
qm_list_inspections✅Inspection lots — incoming · in-process · final inspection, results (passed · failed · conditional · pending), linked nonconformance numbersfrom · to (required), material_id · lot_id · work_order_id
qm_list_nonconformances✅Nonconformances (NCR) — defect · quantity · disposition (rework · scrap · return …) · rework plan · expected replacement timefrom · 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 (pending is not an event).

Where it is used

FeatureHow it is used
Recovery plansIf 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 itemQM 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

ToolRequiredWhat it doesKey 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 waitingfrom · to (required), equipment_id · asset_id · type[] · status[] · open_only
cmms_list_pm_schedulesOptionalWindows in which preventive maintenance stops equipment — duration · earliest start · latest finish · whether it can be moved (movable)from · to (required), equipment
cmms_get_asset_historyOptionalMaintenance 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

FeatureHow it is used
Recovery plansReads 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-checkCompares maintenance work orders against work permits and isolations
Anomaly case labelsLabels 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.

FeatureTools exposedRegister columns it fills
inventory(register only)Quantity
issue_returntool_list_issues — issue · return (who · to which work order · operation · inspection · lot)—
calibrationtool_list_calibrations — calibration records (pre- and post-calibration verdict, maximum error, next due date). Up to 366 daysCalibration
tool_lifetool_list_life_events — regrind · replacement · end of life · life warningLife
presettingtool_list_requirements — list of tools required by a work order · operationPreset
  • The always-exposed tools are tool_capabilities and tool_list_tools (the register of tools · jigs · measuring instruments — statuses available · issued · in_calibration · out_of_tolerance · quarantined · worn_out · retired). The event tool tool_events is 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

FeatureHow 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

ToolRequiredWhat it doesKey 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 · returnfrom · 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

ToolRequiredWhat it doesKey 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 verdictfrom · 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.

FeatureToolWhat it does
permitsehs_list_permitsWork permits — type · status · equipment · area · work order · maintenance work order · operation, validity period, whether isolation is required
isolationsehs_list_isolationsIsolation (LOTO) — isolation points · permit · planned/applied/verified/removed times
incidentsehs_list_incidentsIncident references — accident · near miss · unsafe condition · environmental release, severity grade
inspectionsehs_list_inspectionsSafety inspections — number of findings · open actions
risk_assessmentsehs_list_risk_assessmentsRisk assessments — approval date · review due date
trainingehs_list_trainingRole 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

FeatureHow it is used
Job readiness — permit itemReports reasons such as no permit, no permit covering the operation, or required isolation missing
Permit coverage checkWhether 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 plansAdds 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.

ProductFamily · versionTools exposedProduct-side interfaceAuthentication
SAP S/4HANAERP 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 fourOData 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.2All fourREST (OSLC JSON) — work orders · preventive maintenance · assetsAPI key (MAS) · maxauth (7.6) · basic
Siemens TeamcenterPLM plm-mcp/0.2All four (including documents)SOA JSON — saved queries · BOM windows · where-usedSession login (user · password)
Dassault 3DEXPERIENCEPLM plm-mcp/0.2All four (including documents)3DPassport login → 3DSpace change · engineering · document APIsUser · 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 null and unknown_fields. Filling them with 0 or an empty string makes them read as a «measured 0» and produces wrong verdicts.
  • Honor readOnlyHint: true on 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.