How long are ships waiting at Durban anchorage?
On the evening of 1 November, UTC, four Claude runs measured Durban port congestion by counting the ships at Durban anchorage. They found 29, 7, 31 and about 32. The longest wait any run dated was about 18 days, for one ship. That figure came from the run whose prompt asked only for the longest wait. The two Sonnet runs that tried to date every ship gave rough bounds, and one called the rest of its waits unknown. Haiku dated nearly every ship, but reasoned as if it were seven hours earlier than it was.
Data from live runs on 1 November 2026. Series: Hub: What can an AI agent answer from an AIS API via an MCP server? · Part 1: Are US Gulf crude tankers arriving laden or in ballast? · Part 2: How long are ships waiting at Durban anchorage? · Part 3: Has the Rotterdam port backlog cleared after Storm Austen?
Kuehne+Nagel's port update of 27 October described Durban as severely congested. Its 7-day average vessel waiting time was about 7.3 days.
Two Durban prompts on Sonnet and Haiku
The short prompt ran once, on Sonnet 5.5:
How many ships are waiting at Durban anchorage right now, and what is the longest current wait?
The longer prompt ran twice on Sonnet 5.5 and once on Haiku 5.5:
How many ships are waiting at Durban anchorage right now, and how long has each of them been waiting? Work out the waits as well as you can from the data, and tell me how you did it.
Each run was one non-interactive call to Claude Code in an empty directory. Its only tools were the 19 from vesselapi-mcp, the MCP server for the VesselAPI AIS API. They return live positions, vessel records, port calls and the ships declaring a port as their destination. User settings and Claude Code's built-in tools were switched off. The hub has the setup and the full method. A proxy refused requests beyond 80 per run. None of these four runs came near that cap, and each count below is what that one run found.
Four counts of the Durban anchorage queue
| Run | Area searched | Pages read (minutes covered) | At anchor | Waits | Requests | Time |
|---|---|---|---|---|---|---|
| Short prompt, Sonnet | After a 20 km circle, a box about 8 km south to 29 km north of the reference point | 2 pages, about 10 minutes | 29 | Four traced, longest about 18 days | 22 | 85 s |
| Long prompt, Sonnet run 1 | Box from 19 km south to 14 km north | 3 pages, about 8 minutes | 7 | Bounds from port events, declared ETAs and passage times | 19 | 58 s |
| Long prompt, Sonnet run 2 | After a 25 km circle, a box from 3 km to 36 km north | 2 pages, about 10 minutes | 31 | Upper bounds for 7 ships | 23 | 65 s |
| Long prompt, Haiku | A 25 km circle, then an 8 km circle and a box offshore | Around midday only | about 32 | 29 of 32 dated | 31 | 211 s |
"At anchor" means AIS navigational status 1, which the crew sets. Each count is what that run found. Every run ended with more pages left unread, and each said its count was a minimum. The short-prompt run put it as "Treat 29 as a floor."
Across the four runs, 33 distinct ships reported status 1. The short-prompt run's 29 all appear in Sonnet run 2's 31. Haiku shared 27 of them, from positions seven hours older.
Where Durban anchorage lies
get_port with the code ZADUR returned Durban's record, a reference point in the harbour, and each run drew its own search area around it. The ships at anchor lay between about 16 and 37.5 km from that point, offshore to the north-east.
Sonnet run 1 drew a box whose northern edge sat about 14 km north of the reference point. Of the 29 ships the short-prompt run found, 22 lay north of that edge. Run 1 saw the problem itself. It noted that its northern edge cut through the anchorage and that ships anchored further north would not have shown up.
Two or three pages of 50 reports covered about ten minutes of traffic. In those minutes the three runs that covered the anchorage found 29 to 32 ships, out of 33 seen across all four. A ship that stayed silent in those minutes, or set another status, was missed.
How a wait is dated from sampled positions and port events
An AIS position report gives a ship's status and position at one moment. Dating a wait means finding when that status began, from earlier samples.
Position history comes back newest first. An open window such as "from 25 October" returns the most recent reports and stops at the page limit. In Sonnet run 2, one page for three ships covered a little over an hour. The runs that went further back asked for a short window on each earlier date. Each window gives one sample of where the ship was that day.
Samples become bounds. The earliest sample showing the ship at the same spot at anchor is a lower bound. The last sample before that, showing it under way or at a berth, gives an upper bound. Together they make a range. A ship missing from a sample proves nothing, since it may not have reported in those minutes. Haiku put it in one line: "Absence from a 10-minute sample doesn't prove a ship wasn't there."
Port events add a second bound. They record arrivals and departures at a port. A ship that left a Durban berth three days ago has waited three days at most. Declared ETAs (estimated times of arrival) give a third, weaker bound, since the crew enters them.
The short prompt found a wait of about 18 days
The short-prompt run counted 29 ships in two pages. It gave the longest wait as "[ship A] at roughly 18 days, though that rests on sampled positions, so it isn't exact."
The run then sent one get_vessel_positions_batch call per sample date for all 29 ships, each a 20-minute window around midday on 30, 26 and 22 October. It followed five candidates back through four more dates to 8 October, and single ships to 1 October. One earlier sample returned no report for [ship A], so its earliest position in the run is from mid-October.
| Ship | Agent's estimate | Basis in the samples |
|---|---|---|
| [ship A] | about 18 d | Under way in mid-October, then at anchor at the same spot in every sample since. No port event in 31 days. |
| [ship B] | about 15 d | At a berth earlier in October, then at anchor. |
| [ship C] | at most about 13 d | In another port in mid-October, at anchor by late October. |
| [ship D] | about 7 d | At anchor through most of October, then a short port call, then back at anchor. |
[ship D] shows a choice the agent made. It counted only the current stretch at anchor, so the ship's month off Durban came out at about 7 days. The agent called its dates "accurate to a day or two".
It left most of the 29 undated. "I only traced the vessels that looked longest-staying," it wrote. It treated ships missing from the 22 October sample as later arrivals. That sample was a full page of 50 reports and covered only 13 of the 29 ships. Some of the missing ships may have been cut off by the page limit.
Two Sonnet runs that tried to date every ship
Run 1 opened with "Seven ships are at anchor off Durban right now, but I can't give exact wait times for any of them." Its box had cut off most of the anchorage. It read each ship's last port event and its declared ETA. For one ship it reasoned from passage time instead, about 15 days at 13 knots from its last port. Its estimates ran from at least 5 hours to at most about 12 days. Three rested on ETAs, and it flagged them: "Each ship sets its own ETA, so those three are upper bounds at best."
Run 2 counted 31 ships and called get_vessel_last_port_event for 16 of them. Four returned no event. Among the others, six had left a Durban berth between 17 and 29 October. Those departures put their waits at about 3 to 15 days at most. Five had last left a port two to three weeks earlier, and it noted that passage time used up most of those bounds. It judged that paging back through 31 ships' histories would take too many calls. Its summary said "For the rest, the real waits are unknown."
Run 2 read position windows that return the newest reports first, so its history reached back about an hour. Run 1 asked for a few earlier windows for single ships but never sampled the whole group on earlier dates. The short prompt, with less asked of it, went further back.
Haiku dated 29 of 32 ships, reasoning as if it were midday
Haiku listed about 32 ships and gave 29 of them a wait or a range. "Most have been waiting at least three days," it wrote. It split the ships into groups of 7, 13 and 12 and sampled each group in 6- to 10-minute windows. Those windows never filled a page, so no ship dropped out of a sample because of the page limit.
Its first sample for the larger groups was 27 October. Ten ships came out at "≥ 5.0 d", the time from that first sample to midday on 1 November. [ship A], dated at about 18 days by the short-prompt run, is one of the ten.
Haiku also reasoned as if it were "about 12:05 UTC". The requests log shows its calls ran a little after 19:10 UTC. Claude Code gives the agent the date but not the time, so the model guessed the hour. Its area searches all ended at midday, so its count describes the anchorage seven hours earlier. Each wait it gave is about seven hours short. For agent builders, the fix is to state the current UTC time in the prompt.
The same ships across the runs
| Ship | Short prompt | Sonnet run 1 | Sonnet run 2 | Haiku |
|---|---|---|---|---|
| [ship A] | about 18 d | outside its box | no port event | at least 5 d |
| [ship B] | about 15 d | outside its box | not checked | at least 5 d |
| [ship D] | about 7 d | outside its box | at most about 7.5 d | at least 5 d |
| [ship E] | not traced | at most about 10 d, from ETA | no port event | at least 7 d |
| [ship F] | not traced | at least about 47 h | not checked | 5.0 to 5.3 d |
The runs disagree less than their headlines suggest. Most cells are bounds from different evidence, and they overlap. Put together, [ship E] has waited about 7 to 10 days, if its declared ETA was right. That range is our combination of two runs, and no single run gave it.
Durban port congestion against Kuehne+Nagel's figures
Kuehne+Nagel gave delays of 0 to 17 days depending on terminal. It also gave a 10.5-day average anchorage wait at one container terminal. The short-prompt run's two longest waits were about 18 and 15 days. The 15 sits inside that spread and the 18 slightly above it. Haiku wrote that most ships had waited at least three days, counted to midday.
The populations differ. Kuehne+Nagel's 10.5 days covers one container terminal. The agents counted every ship at anchor off the port, including ships waiting after a completed port call. AIS position reports do not say which terminal a ship is waiting for.
Series: Hub: What can an AI agent answer from an AIS API via an MCP server? · Part 1: Are US Gulf crude tankers arriving laden or in ballast? · Part 2: How long are ships waiting at Durban anchorage? · Part 3: Has the Rotterdam port backlog cleared after Storm Austen?
Claude, Claude Code, Sonnet, Haiku and Anthropic are trademarks of Anthropic PBC. Other names are trademarks of their respective owners.