Forge reads BACnet/IP from 3 OEM families and emits the same canonical JSON for every one of them. No per-vendor parser, no per-vendor schema.
One MCP endpoint serves every protocol adapter — there is no per-protocol URL to configure.
Each links to its own mapping reference with vendor-specific tag shapes.
| OEM | Vertical | Protocols | Coverage | Mapped |
|---|---|---|---|---|
| Chemical process | process / batch | OPC UA Modbus TCP MQTT Sparkplug B BACnet/IP | 96% | 10 fields |
| Food & beverage process | process / batch | OPC UA Modbus TCP MQTT Sparkplug B BACnet/IP | 96% | 10 fields |
| Pharma process (GMP) | process / batch | OPC UA Modbus TCP MQTT Sparkplug B BACnet/IP | 96% | 10 fields |
Sampled from the live corpus — one example per vendor, so you can see the same canonical field arriving from different raw tag shapes.
| Raw tag in | Canonical field out | Source | |
|---|---|---|---|
| RX_PRESS: 3.4 | → | process.reactor.pressure_bar: 3.4 | Chemical process |
| CIP_STATE: "RINSE" | → | process.cip_state: "RINSE" | Food & beverage process |
| BATCH_ID: "LOT-2291" | → | process.batch_id: "LOT-2291" | Pharma process (GMP) |
The fields most commonly emitted by these 3 OEMs. The full schema is open source: FoundryNet/canonical-schema (MIT).
process.agitator_rpmprocess.batch_idprocess.cip_stateprocess.flow_rateprocess.jacket.temp_cprocess.level_pctprocess.phprocess.phase_stateprocess.reactor.pressure_barprocess.reactor.temp_c
Other protocols: EtherNet/IP HTTP / REST J1939 (CAN) MQTT Sparkplug B MTConnect Modbus TCP OPC UA PROFINET / S7 ROS 2 (DDS)