MTConnect

How to Connect Any MTConnect Agent to Spall

MTConnect is an open standard, not one CNC brand's feature. Probe versus current, what a data item's category means, and adapters versus agents explained plainly.

~15 min · Last reviewed September 12, 2026

MTConnect is an open, vendor-neutral standard for machine tool data, maintained by the MTConnect Institute, and a growing number of CNCs publish it natively or through a small piece of adapter software sitting in front of the control. If your machine has an MTConnect agent running anywhere, on the control itself or on a small box bolted near it, this guide covers connecting it, whether the nameplate says a brand with its own dedicated guide in this series or not. The standard is the same either way, a plain HTTP endpoint returning XML, no brand-specific SDK required.

Before you start You’ll need the agent’s base URL (http://host:port, and the specific device path if the agent serves more than one machine), an Ethernet drop, a fixed IP, and the Spall gateway on the same network. Spall polls the agent. It never writes to the machine.

1. Adapters versus agents, and why the distinction matters

Two different pieces of software wear the MTConnect name, and knowing which one you’re looking at saves confusion. The adapter sits closest to the machine, sometimes built into the control’s own firmware, sometimes a small separate program, and its job is translating the machine’s native data (a FANUC parameter, a Siemens PLC bit, whatever the control exposes) into the standard’s own vocabulary. The agent is the HTTP server that publishes that translated data as MTConnect’s standard XML, and it’s the agent, not the adapter, that Spall (or any other MTConnect client) talks to.

On some machines the two live in the same box and you never see the seam. On others, particularly older controls retrofitted for MTConnect, a separate adapter box feeds a separate agent, and both have to be running and correctly paired before the agent has anything real to publish. If an agent answers but every data item comes back UNAVAILABLE, checking that its adapter is running and connected is the first thing to look at, before assuming the agent itself is broken.

Adapter translates, agent publishes, Spall polls Machine control native data Adapter translates Agent /current HTTP + XML Spall Sometimes one box does both jobs. Both have to be running and paired before there's anything real to poll.
Spall only ever talks to the agent's HTTP endpoint. What feeds that agent is the adapter's job, not Spall's.

2. Probe versus current: what you read, what Spall reads

An MTConnect agent exposes a few standard verbs, and two of them matter here. /probe returns the device’s full structure, every component and every data item it’s capable of publishing, along with each one’s dataItemId, the stable key you’ll address a tag by. /current returns a live snapshot, the most recent value for every one of those data items, no history, just what it is right now. Spall polls /current on a schedule. That’s the endpoint built for a fixed-interval poller. You read /probe, by hand, once, to find out what IDs exist and what they’re called.

Point a browser at http://<agent host>:<port>/probe before configuring anything in Spall. It’s plain XML, readable without special tooling, and it’s the fastest way to see what a machine you’ve never connected before publishes, rather than guessing dataItemId names from a generic list. Note the exact dataItemId for each value you want. They’re case sensitive and specific to that agent’s own configuration.

Probe once by hand, current polled on a schedule /probe every dataItemId, read once by a person, in a browser what you read first /current a live snapshot, no history polled by Spall, on a schedule what Spall reads
Two verbs, two audiences. A dataItemId you find in probe is what you type into a tag's address field.

3. What a data item’s category means

Every element in an MTConnect response falls into one of three categories, and that category is what tells you how to read the value.

  • Samples are continuously variable numeric readings, spindle load, feedrate, a position, an axis velocity. Type these as int or float in Spall.
  • Events are discrete states or strings, execution state, controller mode, program name. Type these as string.
  • Condition is health or alarm state, and it works differently from the other two: the meaningful value is the element’s own tag name, Normal, Warning, or Fault, not any text inside it. Type a Condition data item as string and read the level name it reports.

The standard also defines an UNAVAILABLE sentinel value, a data item’s way of saying it has nothing to report right now, a probe that hasn’t been touched since power-on, an axis that isn’t installed. Spall shows that as no data, not a zero and not an error, the same gap handling as any other source that has nothing yet.

Samples, Events, and Condition read differently Samples Load, Position continuously variable type: int / float Events Execution, Mode discrete state or string type: string Condition Normal / Warning / Fault the tag name IS the value type: string (level name)
Condition is the odd one out. Its own element tag name carries the meaning, not the text inside it.

4. Confirm the agent answers

MTConnect agents don’t share one universal port the way Modbus does. Check the specific agent’s own configuration. 5000 is a common default. From a PC on the same network:

curl http://192.168.4.20:5000/current

A response full of XML, even one showing several UNAVAILABLE data items, confirms the agent itself is reachable. That’s a data-mapping question for later, not a connection failure. No response at all points at the port, a firewall, or the agent process itself, not Spall. This test doesn’t touch Spall yet.

5. Add the source in Spall

In Spall, add the machine, choose MTConnect as the source, and enter the agent’s base URL:

http://192.168.4.20:5000

For an agent serving more than one device, include the device path in the base URL, e.g. http://192.168.4.20:5000/VMC-3Axis. Spall appends /current automatically. Assign the Spall gateway and save.

6. Add a tag per data item

For every value from your /probe read, add a tag with its exact dataItemId as the address and a type matching its category from step 3, int or float for a Sample, string for an Event, string for a Condition (reading the level name). Every new tag lands in the Signal inbox unclassified until someone confirms what it means.

What Spall does with this data

Availability. A tag mapped to Execution or a comparable Event splits every hour into running, idle, and down.

Downtime and reasons. Each stop is caught the instant the mapped state changes. Operators tag the reason, ranked into a Pareto.

Production. A Sample or counter-bearing data item drives target-vs-actual by shift and job.

Quality and OEE. Availability, performance, and quality still roll into one OEE view, dollar-ranked, whatever agent fed the underlying tag.

One thing worth repeating Spall issues /current GET requests only. It never writes to the agent or the machine behind it. MTConnect itself is a read-only publishing standard with nothing to write to in the first place. Worst case if the agent goes quiet is a gap in the chart. The machine keeps running.

Quick recap

  • MTConnect is an open standard, the setup here applies to any agent, brand-specific or not
  • An adapter translates the machine’s native data. An agent publishes it over HTTP as MTConnect XML. Spall only talks to the agent
  • Read /probe yourself, once, to find dataItemIds. Spall polls /current on a schedule, the endpoint built for it
  • Samples are numeric, Events are strings, Condition’s meaningful value is the level name itself (Normal, Warning, Fault), not the element’s text
  • UNAVAILABLE is the standard’s own way of saying a data item has nothing to report. Spall shows that as no data, not a zero
  • Every new tag lands in the Signal inbox unclassified until someone tells Spall what it means

If an agent’s /probe response is long enough to get lost in, bring the raw XML to a pilot call. We’ll pull out the handful of data items worth mapping.

Related guides

From the Help Center

$200/machine/mo · pilots from $4,500 · hardware included

See full pricing →

Bring your machine list. We'll tell you exactly what plugs in.

30 days, hardware included, line pilot $4,500 or plant pilot $8,500, fully credited when you expand.