Live truck GPS tracking: create loads, read live position, ETA and trip stats, cancel a load.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Real-time freight tracking and load visibility for logistics software and AI agents: an MCP server and a TypeScript SDK that give any agent live driver GPS position for a truckload shipment in US trucking β create a load over the API, the driver connects from an SMS link in about a minute, and from then on position, ETA, stop timeline and post-trip stats are one call away. No ELD provider integration, no corporate contract, no sales call.
| Package | npm | What it is |
|---|---|---|
@suverselabs/pingpoint-mcp | npm i @suverselabs/pingpoint-mcp | MCP server β 7 tools over stdio, for Claude and any MCP-capable agent |
@suverselabs/pingpoint-sdk | npm i @suverselabs/pingpoint-sdk | Typed API client β zero dependencies, typed errors, idempotent retries |
Full API documentation: https://pingpoint.suverse.io/docs Β· OpenAPI 3.1 spec: /docs/openapi.json
Most carriers in US trucking are one- or two-truck companies. They have no corporate telematics stack, no visibility contract, and no IT department β the truck is the company. When a broker needs to know where a load is, the only reliable instrument is a phone call to the driver.
That is why "AI track & trace" from most vendors today means a robot that calls a human and asks. The position data itself never becomes machine-readable β it lives in one driver's head, one call at a time. PingPoint makes the position itself available over an API: the driver installs one app from an SMS link, and from that moment any software β or any AI agent through MCP β reads live GPS instead of asking someone to dial.
POST /v1/agent/loads with the driver's phone and the stops. Required: driverPhone (E.164 β the driver link is texted to this number) and the pickups / deliveries arrays; every stop needs address, city, state, zip. Multi-stop loads are supported β several pickups and several deliveries, in array order.
The response carries the loadNumber (used in every later call), a public trackingLink for the customer, and the driver web/app links. Two safety nets against double-charging:
customerRef doubles as a dedup key β re-sending the same reference returns the existing load (deduplicated: true) instead of creating a duplicate;Idempotency-Key header makes retries after a network failure safe β the balance is debited and the load created at most once.PingPoint texts the driver a link automatically. The link opens onboarding: install the app, tap through consent, done β about a minute of the driver's time, once. Under the hood the link carries a one-time load token which the app exchanges for a persistent device token, so the next load to the same phone number binds without any new setup.
The phone stays the gateway for both channels β the dongle talks to the app, not to the network. The point of two sources is that they fail differently: the dongle keeps positions coming for as long as the engine runs even when the phone's GPS can't get a fix or the OS has throttled background geolocation. Dongle frames also carry their own timestamps, taken from the frame itself rather than the moment of upload β so when a buffered backlog is flushed after an offline stretch, the recorded times are the real ones.
Every pickup and delivery stop gets a geofence. Entering the pickup zone moves the load to AT_PICKUP, leaving it moves to IN_TRANSIT, entering the delivery zone to AT_DELIVERY β and DELIVERED is set when the truck departs the final delivery zone, not on arrival. Stop arrivedAt / departedAt timestamps come from the same geofence events.
On a multi-stop load only the ends move the status: departing the first stop sets IN_TRANSIT, arriving at the last sets AT_DELIVERY and departing it sets DELIVERED β whatever the type of that stop. Middle stops record their own timestamps and leave the load's status alone.
External status writes don't exist: PATCH β¦/status answers 501 OPERATION_NOT_AVAILABLE. This is a data-integrity guarantee, not a missing feature β a status you read was never hand-set by anyone; there is recorded position behind it. Delivery confirmation is likewise not a vendor operation: it belongs to the carrier flow, where the carrier files the BOL over Telegram. A load you no longer need is stopped with cancel_load.
GET /v1/agent/loads/{loadNumber} returns the live state: status, the GPS track (up to the 500 most recent points), the stop timeline with arrival/departure timestamps, distance covered, dwell times, on-time flag and an ETA block computed from the stored route geometry and the latest position. After the trip, GET β¦/trip-stats returns an aggregated summary computed over every recorded ping. Webhooks can push load events to your endpoint as they happen (see the docs).
A sandbox key is published in the docs and works on the same endpoints β no account, no balance, no live driver:
Create a load with it and add a scenario field. A simulated truck then walks the real route through the same geofence engine a live truck uses, so statuses advance on their own (PLANNED β AT_PICKUP β IN_TRANSIT β AT_DELIVERY β DELIVERED):
scenario | What happens | Trip length |
|---|---|---|
normal | Arrives inside the delivery window | β 20 min |
late | Arrives after the window β onTime: false | β 26 min |
signal_loss | Pings stop mid-trip for about 4Β½ minutes, then resume | β 20 min |
What it is not: there is no real driver, no real phone and no ELD dongle β SMS is never sent, though the driverLink in the response is returned and opens. The key is shared, so every sandbox load is visible to everyone holding it: don't put real addresses or phone numbers in one, and either leave customerRef out or make it unique (it is the dedup key β a collision returns someone else's load). Sandbox loads live at least an hour and are then removed by the hourly cleanup. The cap is 30 loads per hour shared by all users of the key; over it the create call answers 429 SANDBOX_RATE_LIMITED.
Everything else is the production system: real geofences, real ETA math, real trip stats, real cancellation.
sup_agent_β¦ key arrives by e-mail. PingPoint never stores the secret β if it's lost, re-issue a new one from the same page.The driver link is already on its way to +15551234567 by SMS. From here, GET /v1/agent/loads/LD-2026-042317 reads the live position.
Claude Code, one line:
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/pingpoint-2)<a href="https://allmcps.com/mcp/pingpoint-2"><img src="https://allmcps.com/api/badge/pingpoint-2?style=directory" alt="Pingpoint on AllMCPs" /></a>