Six months ago I wrote about how a "viral" Dev.to article promoting a Local RAG tool sold exactly one copy. The lesson I took from that: I'd been building from what looked trendy, not from a problem I actually had.

This time I did it differently. I use Modbus every week at work — reading data off PLCs, inverters, sensors. So when I started learning agentic AI, I asked a narrower question: can an LLM agent actually operate real industrial hardware, not just call web APIs?

Most agent tutorials wire an LLM up to a weather API or a search tool. That's a reasonable place to start, but it skips the part that makes industrial protocols genuinely hard: the data isn't semantically labeled. A Modbus register is just two bytes. Whether those two bytes mean "1500" or "-3.2°C" or half of a 32-bit float depends entirely on a device's register map — usually buried in a PDF nobody reads twice.

This is what I built, and what I learned building it.

Tool calling looks easy until the data isn't clean