Forge reads Modbus TCP from 14 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.
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 | |
|---|---|---|---|
| Spindle_Speed: 2200 | → | spindle_speed_rpm: 2200 | Fanuc |
| Q600_1: 3400 | → | spindle_speed_rpm: 3400 | Haas |
| actual_q_0: 1.57 | → | robot.joint.position: 1.57 | Universal Robots |
| 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 14 OEMs. The full schema is open source: FoundryNet/canonical-schema (MIT).
alarm_codeaxes.0.load_percentaxes.0.position_actualaxes.0.temperature_ccnc.path.feedrateenergy.cumulative_kwhfeed_rateidentity.controller_modelmachining_statepart_countpower.instantaneous_kwprogram_name
CNC / machine tool industrial robot process / batch
Other protocols: BACnet/IP EtherNet/IP HTTP / REST J1939 (CAN) MQTT Sparkplug B MTConnect OPC UA PROFINET / S7 ROS 2 (DDS)