My Citroën C2 has had the check-engine light on since October. Every drive goes into OBD Vault, my app that reads the car through a cheap ELM327 adapter and stores it in the cloud. The app has an MCP server, so I connected Claude to my account and asked it what a driver asks a mechanic. This is what it worked out.
The car and the data
A C2 with the 1.4 petrol engine. The engine unit is a J34P, software 613861, built in September 2005. It answers in its own manufacturer dialogue as well as standard OBD, so the app reads both.
Since 4 September the app has recorded 98 sessions and 249,715 readings. Some are short scans in a parked car, some are trips recorded in the background while I drive. The model only gets read-only tools: vehicle status, fault code history, the readings around a code, statistics over time, raw readings.
Why is the light on
This one it answered in a single call. One standard code, P0134: the upstream oxygen sensor shows no activity. The car has driven 624 km with the light on.
Then it rebuilt the history. P0134 was stored on 11 October. I cleared it from the app that afternoon. Two hours later it was back as pending. By 20 October it was stored again and the light was on. That evening a P0116 coolant sensor code showed up as pending five times and never became stored.
The freeze frame is the snapshot the engine unit saves when it sets a code. Mine says 45 °C coolant, 1187 rpm, 10 km/h, 28% load, both fuel trims at +25%. The snapshot before I cleared the code said 49 °C, 51 km/h, long-term trim +14.8%. Both times the engine was not warm. The second time the car was crawling and the engine unit was already adding all the fuel it could.
Is the sensor dead
I asked it to check on a warm engine, not on the freeze frame. It took twelve minutes of my drive on 2 November with coolant at 75-83 °C. 500 readings from the upstream sensor: 0.15 to 0.38 V. Not one above 0.45 V. A working sensor of this type keeps swinging between about 0.1 and 0.9 V.
The sensor after the catalyst in the same twelve minutes: 498 of 500 readings above 0.7 V, which means rich. Short-term trim averaged +23.7%, long-term +28.2%.
Its reading: the upstream sensor says lean all the time, the engine unit believes it and adds fuel, and the exhaust after the catalyst is rich. The sensor is lying.
It also pulled the long-term trim by day. Around +14 to +20% in September, +22.7% on 8 October, +25.1% on 13 October, +28.1% on 2 November. It has been getting worse for two months.
I asked if the cold engine causes the code. No: at 83 °C the sensor still did not move.
Why the engine runs cold
I asked how the engine warms up. On 22 October I drove 28.7 km in 46 minutes and the coolant never went above 55 °C.
On 2 November it finally warmed up. 23 °C at the start, 50 °C after 7 minutes, 70 °C after 20, 83 °C after 30. For those 30 minutes the car averaged 16 km/h. Then the average went to 36 km/h, top speed 79, and the coolant fell to 64 °C.
Its first guess was the radiator fan. On the scans where the engine unit was read in full on 13, 21 and 22 October, the fan was commanded to 58% in every reading and the coolant sat at 46-52 °C. On 20 October the fan was at 0% and the coolant at 80-83 °C. On 21 October the A/C request was on in about two thirds of the readings.
That guess was wrong, and it said so after looking at the 2 November drive. When the thermostat is closed, coolant doesn't go through the radiator, so the fan can't cool the engine. An engine that cools down from 83 to 64 °C when the car goes faster has coolant going through the radiator. Its suspect now is a thermostat that is stuck open or opens too early.
What the engine unit keeps to itself
A standard scan shows one code. The engine unit's own memory has seven entries: P1676 twice, P1675 and P1674 for the controlled alternator, P0571 for the brake switch, P1693 for a message from the body computer, and P0134.
When I cleared codes on 11 October, the standard clear removed P0134 and a P0420 catalyst code from that memory. The alternator and brake switch codes stayed. P0420 hasn't come back.
The model checked charging voltage as reported by the engine unit while running: 13.2-13.7 V on 21 October, 13.4-13.7 V on 2 November. Looks normal.


Going under the bonnet
So now I know what I am looking for when I open the bonnet of my lovely little bucket. Before I buy a new upstream oxygen sensor, I will check its plug, the wiring back to the engine unit, and the heater circuit, and look for an exhaust leak ahead of the sensor where fresh air could be sneaking in. For the thermostat, I just need to start the car from cold, put a hand on the top radiator hose to see if it warms up too early, and notice whether the cabin heater goes lukewarm once I get out on the open road.
Asked on 3 November 2026 in Claude Code with Claude Opus 5.5, connected to my own OBD Vault account through its MCP server with read-only tools. Data from 4 September to 2 November 2026: 98 sessions, 249,715 readings, a Vgate ELM327 Bluetooth adapter on CAN. Standard readings arrive about every 1.5 seconds on a trip.