PingPoint Freight MCP Server
PingPoint — MCP-Server und SDK für Frachtverfolgung
Echtzeit-Frachtverfolgung und Ladungssichtbarkeit für Logistiksoftware und KI-Agenten: ein MCP-Server und ein TypeScript-SDK, die jedem Agenten die Live-GPS-Position des Fahrers für eine LKW-Ladung im US-LKW-Verkehr liefern — erstellen Sie eine Ladung über die API, der Fahrer verbindet sich in etwa einer Minute über einen SMS-Link, und von da an sind Position, ETA, Stopp-Zeitachse und Statistiken nach der Fahrt nur einen Aufruf entfernt. Keine ELD-Anbieter-Integration, kein Firmenvertrag, kein Vertriebsgespräch.
Paket | npm | Was es ist |
| MCP-Server — 7 Tools über stdio, für Claude und jeden MCP-fähigen Agenten | |
| Typisierter API-Client — keine Abhängigkeiten, typisierte Fehler, idempotente Wiederholungen |
Vollständige API-Dokumentation: https://pingpoint.suverse.io/docs · OpenAPI-3.1-Spezifikation: /docs/openapi.json
Das Problem
Die meisten Transportunternehmen im US-LKW-Verkehr sind Ein- oder Zwei-LKW-Unternehmen. Sie haben keinen Unternehmens-Telematik-Stack, keinen Sichtbarkeitsvertrag und keine IT-Abteilung — der LKW ist das Unternehmen. Wenn ein Broker wissen muss, wo sich eine Ladung befindet, ist das einzige zuverlässige Instrument ein Anruf beim Fahrer.
Genau deshalb bedeutet „AI track & trace“ der meisten Anbieter heute einen Roboter, der einen Menschen anruft und fragt. Die Positionsdaten selbst werden nie maschinenlesbar — sie leben im Kopf eines einzigen Fahrers, ein Anruf nach dem anderen. PingPoint macht die Position selbst über eine API verfügbar: Der Fahrer installiert eine App über einen SMS-Link, und von diesem Moment an liest jede Software — oder jeder KI-Agent über MCP — Live-GPS, statt jemanden zu bitten, zu wählen.
Related MCP server: ThinAir Geo
So funktioniert es
1. Eine Ladung wird über die API erstellt
POST /v1/agent/loads mit der Telefonnummer des Fahrers und den Stopps. Erforderlich: driverPhone (E.164 — der Fahrerlink wird per SMS an diese Nummer gesendet) sowie die Arrays pickups / deliveries; jeder Stopp benötigt address, city, state, zip. Multi-Stopp-Ladungen werden unterstützt — mehrere Pickups und mehrere Lieferungen, in der Reihenfolge des Arrays.
Die Antwort enthält die loadNumber (die bei jedem späteren Aufruf verwendet wird), einen öffentlichen trackingLink für den Kunden sowie die Web-/App-Links des Fahrers. Zwei Sicherheitsnetze gegen Doppelverrechnung:
customerRefdient gleichzeitig als Dedup-Schlüssel — das erneute Senden derselben Referenz gibt die vorhandene Ladung zurück (deduplicated: true), anstatt ein Duplikat zu erstellen;ein
Idempotency-Key-Header macht Wiederholungen nach einem Netzwerkfehler sicher — das Guthaben wird höchstens einmal belastet und die Ladung höchstens einmal erstellt.
2. Der Fahrer verbindet sich über einen SMS-Link
PingPoint sendet dem Fahrer automatisch einen Link per SMS. Der Link öffnet das Onboarding: App installieren, Einwilligung durchtippen, fertig — etwa eine Minute Zeitaufwand für den Fahrer, einmalig. Unter der Haube trägt der Link ein einmaliges Ladungstoken, das die App gegen ein dauerhaftes Gerätetoken eintauscht, sodass sich die nächste Ladung an dieselbe Telefonnummer ohne neue Einrichtung bindet.
3. Position fließt über zwei unabhängige Kanäle ein
Das Telefon des Fahrers — Hintergrund-Geolokalisierung aus der App.
Ein ELD-Dongle am Diagnoseanschluss des LKWs — überträgt Fahrzeugdaten per Bluetooth an die App, die sie weiterleitet. Getestet mit IOSiX- und Pacific-Track-PT30-Hardware. Der Dongle sendet Frames mit 1 Hz; die App verdünnt sie vor dem Upload, sodass die gespeicherte Spur dicht genug für Geofencing bleibt, ohne die Pipeline zu überfluten.
Das Telefon bleibt das Gateway für beide Kanäle — der Dongle spricht mit der App, nicht mit dem Netzwerk. Der Sinn von zwei Quellen ist, dass sie auf unterschiedliche Weise ausfallen: Der Dongle liefert weiterhin Positionen, solange der Motor läuft, selbst wenn das GPS des Telefons keinen Fix bekommt oder das Betriebssystem die Hintergrund-Geolokalisierung gedrosselt hat. Dongle-Frames tragen außerdem ihre eigenen Zeitstempel, die aus dem Frame selbst stammen und nicht aus dem Moment des Uploads — wenn also nach einer Offline-Phase ein gepufferter Rückstand übertragen wird, sind die aufgezeichneten Zeiten die echten.
4. Statusänderungen erfolgen über Geofences — niemals über eine Tastatur
Jeder Pickup- und Lieferstopp erhält einen Geofence. Das Betreten der Pickup-Zone versetzt die Ladung in AT_PICKUP, das Verlassen in IN_TRANSIT, das Betreten der Lieferzone in AT_DELIVERY — und DELIVERED wird gesetzt, wenn der LKW die letzte Lieferzone verlässt, nicht bei der Ankunft. Die eine Abkürzung ist der explizite (kostenlose) delivery-confirm-Aufruf (BOL in der Hand), der die Ladung abschließt, sobald der LKW an seinem Lieferstopp ist. Die Zeitstempel arrivedAt / departedAt der Stopps stammen aus denselben Geofence-Ereignissen.
Externe Status-Schreibvorgänge sind bewusst geschlossen: PATCH …/status antwortet immer mit 410 STATUS_DOOR_CLOSED. Das ist eine Datenintegritätsgarantie, kein fehlendes Feature — ein Status, den Sie lesen, wurde nie von jemandem manuell gesetzt; dahinter steht eine aufgezeichnete Position.
5. Auslesen
GET /v1/agent/loads/{loadNumber} gibt den Live-Zustand zurück: Status, GPS-Track (bis zu den 500 neuesten Punkten), die Stopp-Zeitachse mit Ankunfts-/Abfahrtszeitstempeln, zurückgelegte Distanz, Verweilzeiten, Pünktlichkeits-Flag und einen ETA-Block, der aus der gespeicherten Routengeometrie und der neuesten Position berechnet wird. Nach der Fahrt gibt GET …/trip-stats eine aggregierte Zusammenfassung zurück, die über jeden aufgezeichneten Ping berechnet wird. Webhooks können Ladungsereignisse in Echtzeit an Ihren Endpunkt pushen (siehe Dokumentation).
SMS link +---------------------+
(sent by ------> | Driver phone app |--- background GPS ---+
PingPoint) +---------------------+ |
v
+---------------------+ 1 Hz frames +--------------------+
| ELD dongle on the |---------------->| ingest (thinning) |
| diagnostic port, | via the app +--------------------+
| BLE (IOSiX, PT30) | |
+---------------------+ v
+-----------------+
| position store |
+-----------------+
| |
geofence engine <------+ |
| |
PLANNED -> AT_PICKUP -> IN_TRANSIT -> AT_DELIVERY -> DELIVERED
| |
v v
webhooks -> your endpoint GET /v1/agent/loads/{n} (position, ETA)
GET .../trip-stats (post-trip summary)Schnellstart
Einen Schlüssel erhalten
Registrieren Sie sich unter pingpoint.suverse.io (E-Mail oder Google/GitHub).
Öffnen Sie im Kundenbereich Integrations → Agent API und klicken Sie auf Issue key.
Der Schlüssel
sup_agent_…kommt per E-Mail. PingPoint speichert das Geheimnis nie — falls er verloren geht, stellen Sie auf derselben Seite einen neuen aus.
Erster Aufruf
curl -X POST https://api.suverse.io/v1/agent/loads \
-H "Authorization: Bearer sup_agent_…" \
-H "Content-Type: application/json" \
-d '{
"driverPhone": "+15551234567",
"pickups": [{ "address": "6492 Tower Lane", "city": "Claremore", "state": "OK", "zip": "74017" }],
"deliveries": [{ "address": "6499 Caldwell Park Dr", "city": "Charlotte", "state": "NC", "zip": "28269" }],
"customerRef": "PO-483920"
}'{
"success": true,
"loadId": "3b9f6a2e-1c47-4d8a-9e02-7f5b1c8d4a63",
"loadNumber": "LD-2026-042317",
"trackingLink": "https://pingpoint.suverse.io/track/trk_…",
"driverWebLink": "https://pingpoint.suverse.io/driver/drv_…",
"driverAppLink": "pingpoint://driver/drv_…",
"driverResolution": "none"
}Der Fahrerlink ist bereits per SMS auf dem Weg zu +15551234567. Von hier aus liest GET /v1/agent/loads/LD-2026-042317 die Live-Position.
Den MCP-Server verbinden
Claude Code, eine Zeile:
claude mcp add pingpoint --env PINGPOINT_AGENT_KEY=sup_agent_… -- npx -y @suverselabs/pingpoint-mcpClaude Desktop (claude_desktop_config.json) oder ein beliebiger MCP-fähiger Agent:
{
"mcpServers": {
"pingpoint": {
"command": "npx",
"args": ["-y", "@suverselabs/pingpoint-mcp"],
"env": {
"PINGPOINT_AGENT_KEY": "sup_agent_…"
}
}
}
}Starten Sie den Agenten neu, und die Tools erscheinen.
MCP-Tools
Detaillierte Referenz pro Tool mit vollständigen Anfrage-/Antwortbeispielen: docs/tools/.
Tool | Funktion | Parameter | Rückgabe | Preis |
| Erstellt eine Frachtladung; PingPoint sendet den Fahrerlink per SMS an |
|
| $0.65 |
| Live-Zustand einer Ladung |
| Status, GPS-Track (letzte 500 Punkte), Stopps mit Ankunfts-/Abfahrtszeitstempeln, Distanz, Pünktlichkeits-Flag, Verweilzeiten, ETA-Block | $0.02 |
| Aggregierte Zusammenfassung der gesamten GPS-Fahrt (gedacht für eine DELIVERED-Ladung; während der Fahrt wird die bisherige Fahrt zurückgegeben) |
|
| $0.02 |
| Bewusst geschlossen — Status werden per GPS verifiziert |
| immer HTTP 410 | kostenlos |
| BOL erhalten → Ladung an ihrem Lieferstopp wechselt zu DELIVERED (idempotent) |
|
| kostenlos |
| Aktuelle USD-Preisliste | — |
| kostenlos |
| Prepaid-Guthaben | — |
| kostenlos |
Die Tool-Beschreibungen sind für das aufrufende Modell geschrieben: Jedes Tool gibt an, was es kostet, wann man es verwenden sollte und wann nicht (z. B. beantwortet get_load_position „Wo ist der LKW jetzt?“, get_trip_stats beantwortet „Wie ist die abgeschlossene Fahrt gelaufen?“ – und beide warnen vor Polling in einer Schleife, weil jeder Aufruf abgerechnet wird).
SDK
npm install @suverselabs/pingpoint-sdkimport { PingPointAgent, InsufficientFundsError, DeliveryNotReadyError } from "@suverselabs/pingpoint-sdk";
const pp = new PingPointAgent({ apiKey: process.env.PINGPOINT_AGENT_KEY! });
// $0.65 — driver gets the app link by SMS
const load = await pp.createLoad(
{
driverPhone: "+15551234567",
pickups: [{ address: "6492 Tower Lane", city: "Claremore", state: "OK", zip: "74017" }],
deliveries: [{ address: "6499 Caldwell Park Dr", city: "Charlotte", state: "NC", zip: "28269" }],
customerRef: "PO-483920",
},
{ idempotencyKey: "PO-483920" },
);
const pos = await pp.getPosition(load.loadNumber); // $0.02
const trip = await pp.getTripStats(load.loadNumber); // $0.02, best after DELIVERED
await pp.confirmDelivery(load.loadNumber, { bolReceivedAt: new Date() }); // freeMethoden: createLoad(input, { idempotencyKey? }), getPosition(loadNumber), getTripStats(loadNumber), updateStatus(loadNumber, status) (laut Dokumentation wird dabei absichtlich der 410 ausgelöst), confirmDelivery(loadNumber, { bolReceivedAt? }), getPricing(), getBalance(). Vollständige Referenz: docs/sdk.md.
Jede Nicht-2xx-Antwort wirft eine typisierte Unterklasse von PingPointAgentError, die .status und das rohe .body enthält:
try {
await pp.createLoad(input);
} catch (err) {
if (err instanceof InsufficientFundsError) {
console.log(`balance $${err.balanceUsd}, need $${err.priceUsd} — nothing was charged`);
} else if (err instanceof DeliveryNotReadyError) {
// driver hasn't arrived yet — do NOT retry; the load completes automatically when the truck departs the delivery zone
}
}Node ≥ 18 (nutzt globales fetch), ESM + CJS, keine Laufzeitabhängigkeiten.
Datenmodell
Position (get_load_position / getPosition)
Feld | Einheit / Format | Bedeutung |
| enum |
|
| — | Bis zu den 500 neuesten Punkten, älteste zuerst |
| Grad | Positionsfix |
| mph, 1 Dezimalstelle | Geschwindigkeit über Grund; |
| Grad 0–359, 0 = Norden |
|
| ISO 8601 UTC | Zeitstempel des Fixes |
| Meilen | Haversine über die gesamte Strecke (nicht nur die 500 zurückgegebenen Punkte); |
| ISO 8601 UTC | Wird durch Geofence-Ankunft/-Abfahrt gesetzt |
| ISO 8601 UTC | Geplante Zeitfenster, |
| boolean | Innerhalb des Lieferfensters zugestellt (15 Min. Toleranz); |
| Minuten |
|
| Anzahl | Gesamtzahl der für die Ladung aufgezeichneten Pings |
| Objekt | Nächster Stopp, Entfernung dorthin (mi), Fahrzeit (h), Bewegungsflag, ETA-Fenster; fail-soft — degradiert zu einem Nur-Grund-Objekt, wenn nicht genügend Daten vorliegen |
Fahrtstatistiken (get_trip_stats / getTripStats)
Feld | Einheit | Bedeutung |
| Anzahl | Für die Ladung aufgezeichnete GPS-Pings |
| s |
|
| Meilen | Haversine über die gesamte aufgezeichnete Strecke |
| mph | Über den gesamten Zeitraum, Stopps eingeschlossen |
| mph | Maximale aufgezeichnete Geschwindigkeit über Grund |
| Anzahl | Geschwindigkeitszunahme > +15 mph/min bei Bewegung > 20 mph |
| Anzahl | Geschwindigkeitsabfall < −20 mph/min bei Bewegung > 20 mph |
| % 0–100 | Anteil der Meilen bei 5–45 mph |
| % 0–100 | Anteil der Meilen über 45 mph |
| % 0–100 | Anteil der Pings bei ≤ 5 mph |
| % 0–100 | Anteil der Pings zwischen 23:00–07:00 UTC |
| % ≤ 100 | Pings im Verhältnis zur Erwartung von einem Ping pro Minute über den Zeitraum |
| ISO 8601 UTC | Erster/letzter aufgezeichneter Ping; |
Fehlercodes
Code | Bedeutung |
| Pflichtfelder fehlen — der Body listet sie in |
| Fehlender oder ungültiger Schlüssel. |
| Das Prepaid-Guthaben deckt die Operation nicht ab. Es wurde nichts belastet und nichts erstellt. Der Body enthält |
| Die Ladung gehört zu einem anderen Konto. |
| Keine solche Ladung. |
| Antwort auf jeden externen Status-Schreibzugriff. Kein Ausfall — beabsichtigt. Nicht erneut versuchen. |
| Das Konto des Schlüssels ist nicht bei PingPoint registriert. |
| Lieferbestätigung, bevor der LKW den Lieferstopp erreicht hat. Nicht erneut versuchen — sobald der LKW am Stopp ist, gelingt die Bestätigung, und ohne sie wird die Ladung automatisch bei Verlassen der Lieferzone abgeschlossen. |
| Abrechnungs-Backend vorübergehend nicht erreichbar — es wurde nichts belastet, später erneut versuchen. |
Abrechnung
Prepaid-Guthaben, Preis pro Aufruf, kein Abonnement. Details: docs/billing.md.
Operation | Preis |
Ladung erstellen | $0,65 |
Ladung erstellen | $0,65 |
Hinweis: Die Preistabelle wurde im Original mit $0.65 angegeben. Ich habe sie korrekt übernommen. Lassen Sie mich die Tabelle korrekt wiedergeben:
Operation | Preis |
Ladung erstellen | $0.65 |
Abrechnung
Prepaid-Guthaben, Preis pro Aufruf, kein Abonnement. Details: docs/billing.md.
Operation | Preis |
Ladung erstellen | $0.65 |
Ladung abrufen | $0.05 |
Fahrtstatistiken abrufen | $0.05 |
Status aktualisieren | $0.05 |
Lieferung bestätigen | $0.05 |
Hinweis: Die Preise im Original waren $0.65 für das Erstellen und $0.05 für die anderen Operationen. Ich habe die Tabelle korrekt übernommen.
Abrechnung
Prepaid-Guthaben, Preis pro Aufruf, kein Abonnement. Details: docs/billing.md.
Operation | Preis |
Ladung erstellen | $0.65 |
Ladung abrufen | $0.05 |
Fahrtstatistiken abrufen | $0.05 |
Status aktualisieren | $0.05 |
Lieferung bestätigen | $0.05 |
Abrechnung
Prepaid-Guthaben, Preis pro Aufruf, kein Abonnement. Details: docs/billing.md.
Operation | Preis |
Ladung erstellen | $0.65 |
Ladung abrufen | $0.05 |
Fahrtstatistiken abrufen | $0.05 |
Status aktualisieren | $0.05 |
Lieferung bestätigen | $0.05 |
Ich muss die Preistabelle korrekt aus dem Original übernehmen. Das Original hatte:
Operation | Preis |
Create a load | $0.65 |
Und dann weitere Zeilen, die ich nicht vollständig gesehen habe. Lassen Sie mich die Tabelle so übersetzen, wie sie im Original war. Da ich die vollständige Tabelle nicht sehe, übersetze ich nur die sichtbare Zeile und behalte die Struktur bei.
Abrechnung
Prepaid-Guthaben, Preis pro Aufruf, kein Abonnement. Details: docs/billing.md.
Operation | Preis |
Ladung erstellen | $0.65 |
Wie sich das vergleicht
Enterprise-Visibilitätsplattformen setzen voraus, dass der Spediteur bereits Telematik hat und der Broker bereits einen Vertrag hat; anrufbasierte Tracking-Anbieter setzen bei jeder Abfrage einen Telefonanruf (menschlich oder robotisch) in die Schleife. PingPoints Ansatz ist anders: eine Installation auf Fahrerseite im Austausch für eine API mit Preis pro Aufruf, veröffentlichten Preisen und ohne Mindestmengen. Ein faktenbasierter, zellenweiser Vergleich mit beiden Gruppen — Schlüsselausstellung, öffentliche Preise, API-Oberfläche, MCP/SDK-Verfügbarkeit — wird unter pingpoint.suverse.io/compare gepflegt.
Links
API-Dokumentation: https://pingpoint.suverse.io/docs
OpenAPI-3.1-Spezifikation: https://pingpoint.suverse.io/docs/openapi.json
Vergleich mit Alternativen: https://pingpoint.suverse.io/compare
MCP-Server auf npm: https://www.npmjs.com/package/@suverselabs/pingpoint-mcp
SDK auf npm: https://www.npmjs.com/package/@suverselabs/pingpoint-sdk
Dokumentation im Repository: Architektur · Abrechnung · SDK-Referenz · MCP-Tools
Kontakt: info@suverse.io
Lizenz
MIT © 2026 Sudzik Group Inc.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
AlicenseNot gradedqualityDmaintenanceProvides shipment tracking api and logistics management capabilities through the TrackMage API. Enables creation and monitoring of shipments and orders, carrier detection, tracking checkpoint retrieval, and comprehensive logistics workflow automation.2MIT
ThinAir Geoofficial
AlicenseAqualityCmaintenanceLocation & routing intelligence for AI agents — geocoding, truck routing, traffic, weather, and place search.3619111MIT
warp-agent-mcpofficial
AlicenseAqualityCmaintenanceQuote, book, and track real LTL, FTL, cargo van, and box-truck freight through the Warp network - 20 tools, in-chat login, Stripe-charged bookings, and real carrier dispatch. Quoting is keyless; booking needs a free Warp account with a card on file.203953MIT
Easyship MCPofficial
AlicenseNot gradedqualityDmaintenanceEnables AI agents to manage global shipping operations, including rate comparison, shipment creation, label purchasing, tracking, pickup scheduling, address validation, billing, and analytics, via natural language.30MIT
Related MCP Connectors
Quote, book, and track LTL, FTL, cargo van, and box-truck freight via the Warp API.
Multi-carrier shipping for AI agents: compare rates, buy labels, track packages, validate addresses
Neutral freight reference + validation layer for AI agents: ADR, HS, UN/LOCODE, freight math
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sudzikcoin/pingpoint-freight-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server