Forge reads HTTP / REST from 23 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 | |
|---|---|---|---|
| SPN_100: 55 | → | vehicle.engine.oil_pressure: 55 | Caterpillar |
| SPN_100: 52 | → | vehicle.engine.oil_pressure: 52 | Cummins |
| Q600_1: 3400 | → | spindle_speed_rpm: 3400 | Haas |
| /robot_status/battery_percentage: 82 | → | amr.battery.charge: 82 | MiR (Mobile Industrial Robots) |
| actual_q_0: 1.57 | → | robot.joint.position: 1.57 | Universal Robots |
| battery_soc: 0.74 | → | amr.battery.charge: 74 | OTTO Motors |
The fields most commonly emitted by these 23 OEMs. The full schema is open source: FoundryNet/canonical-schema (MIT).
vehicle.brake.air_pressurevehicle.brake.primary_air_pressurevehicle.dtc_descriptionvehicle.engine.fuel_rail_pressurevehicle.engine.intake_manifold_pressurevehicle.engine.oil_pressurevehicle.engine.oil_tempvehicle.tire_pressure_flvehicle.transmission.oil_tempvehicle.turbocharger.rpmvehicle.wheel_speed_flamr.battery.charge
heavy vehicle / off-highway CNC / machine tool autonomous mobile robot industrial robot
Other protocols: BACnet/IP EtherNet/IP J1939 (CAN) MQTT Sparkplug B MTConnect Modbus TCP OPC UA PROFINET / S7 ROS 2 (DDS)