“Which trucks are low on fuel?”
Reads fuelUnit before calling anything low — litres and percent are different facts — and lists units whose sensor is unreadable separately rather than counting them as empty.
FleetAI is an MCP server as well as a chat app. Point Claude Code, Codex or Cursor at your Wialon account and ask about it where you are already working. A skill ships with it, so the agent knows how Wialon behaves before it asks anything.
claude mcp add --transport http fleetai \
https://ai.theassettrack.com/mcp \
--header "Authorization: Bearer <your token>"The token comes from your own Wialon user settings.
One URL and your token — no account here, and nothing to install beyond the bridge Claude Desktop needs. You need a Wialon access token first: in Wialon, under your user settings, create one and copy it — it is 72 characters, and you choose what it may reach and how long it lives.
claude mcp add --transport http fleetai \
https://ai.theassettrack.com/mcp \
--header "Authorization: Bearer <your token>"Run it in the project you want the fleet available in, or add --scope user for every project.
Ask the agent how many vehicles are online. A number means it is connected; an agent that says it has no fleet tools is covered under when it goes wrong.
An agent with the tools can read your account. An agent with the skill knows what the numbers mean — which is the difference between an answer and a confident wrong answer. It is written from the things this account taught us, and it comes with the server.
The server hands the skill to the agent as its instructions when the client connects — which tool answers what, and the rules that decide whether an answer is right. There are no files to copy into a project and none to keep up to date: a client that reconnects has the current version.
Every vehicle carries how many minutes old its position is, and every sensor how old its value is. A speed of 13 km/h recorded in April is not a moving truck.
Unknown, never zero. An unreadable fuel sensor is not an empty tank, and the two are answered differently.
analyze_trips takes a named period. An agent that works out "last 7 days" itself reports today’s driving under yesterday’s name.
Wialon keeps one report result per session, so running and exporting as two steps would export whatever ran in between.
no_messages is "has never reported", no_actual_state is "no current data". Neither a raw status code nor an internal unit id is ever shown to a person.
What the token reaches is what can be answered. Out of reach is said plainly, never filled in with a plausible figure.
The token goes in a header and never in the URL, which clients and proxies write into their logs far more readily. The region has a default that is right for most accounts.
The access token from your Wialon user settings. The identity the server acts as, sent with every request.
The data centre your account is on, appended to the URL. Leave it off for com.
A token is minted at one data centre and is meaningless at the others — hst-api.wialon.com, .eu and .us are three separate worlds. The region is the first thing to check when nothing authenticates.
Twelve tools answer fleet questions directly. The thirteenth is one door to nineteen more Wialon operations, with a catalogue instead of nineteen schemas in every call.
Call an operation with no arguments and it answers with its own schema, so an agent never has to guess what it takes.
These are in the skill, so the agent reaches for them without being told. They are here because they are also the clearest description of what the server can do.
“Which trucks are low on fuel?”
Reads fuelUnit before calling anything low — litres and percent are different facts — and lists units whose sensor is unreadable separately rather than counting them as empty.
“How far did each vehicle drive last week?”
A named period, so the week is the week Wialon means. Totals come from the fleet-wide tool rather than ninety-six per-unit calls.
“Show me Friday's route for Van 023”
The unit id first, then the day, then the positions of the one drive in question.
“Run my mileage report for last week as a PDF”
Your own saved template, run and exported in one call. The file Wialon itself rendered comes back inside the answer — the same document its Export button produces.
“Is the account set up properly?”
Geofences with no notification on them, units sending no fuel sensor, settings that quietly stopped making sense.
Four of them are the same two mistakes, and both are quick to check.
The client has not connected to the server. Check the config file is the one that client reads, and restart it — most read their MCP config only at startup.
Almost always the region. A token is minted at one data centre and is meaningless at the others, so add ?region=eu or ?region=us to the URL if your account is not on hosting.wialon.com. After that, check the header reads Bearer, a space, then the token.
Wialon error 1: the session is gone. Retrying the same call will not help — check the token is still valid and has not expired or been deleted.
An empty interval answers with zero rows and no file, on purpose, rather than handing over an empty document. Widen the dates or check the unit reported at all.
A fleet-week of raw messages is megabytes. Ask for one unit over a bounded interval, and prefer the current sensor values when the question is about now.
You are handing a token to a server of ours. Here is exactly what that server can do with it.
Every tool reads. Nothing in the set creates, edits or deletes anything in your Wialon account.
The token travels in the header of each request to our Worker, which holds it in memory only to call Wialon. It is never stored and never logged.
Wialon names the session in some of its errors, so the credential is stripped out of every answer before it reaches the model.
Delete the token in Wialon and every agent holding it is locked out the same second.
The chat app is the same tools with a map, a dashboard and somewhere to put the answer. Same token, nothing to install.