PingPoint Freight MCP Server
PingPoint — MCP-сервер и SDK для отслеживания грузоперевозок
Отслеживание грузоперевозок в реальном времени и видимость загрузки для логистического ПО и ИИ-агентов: MCP-сервер и TypeScript SDK, которые дают любому агенту живую GPS-позицию водителя для грузовой перевозки в США — создайте груз через API, водитель подключается по SMS-ссылке примерно за минуту, и с этого момента позиция, ETA, таймлайн остановок и статистика после поездки — в одном вызове. Никакой интеграции с ELD-провайдером, никакого корпоративного контракта, никаких звонков продавцов.
Пакет | npm | Что это |
| MCP-сервер — 7 инструментов через stdio, для Claude и любого агента, поддерживающего MCP | |
| Типизированный API-клиент — ноль зависимостей, типизированные ошибки, идемпотентные повторы |
Полная документация API: https://pingpoint.suverse.io/docs · Спецификация OpenAPI 3.1: /docs/openapi.json
Проблема
Большинство перевозчиков в грузоперевозках США — это компании с одним или двумя грузовиками. У них нет корпоративного телематического стека, контракта на видимость и ИТ-отдела — грузовик и есть компания. Когда брокеру нужно узнать, где находится груз, единственный надёжный инструмент — телефонный звонок водителю.
Именно поэтому «AI track & trace» от большинства вендоров сегодня означает робота, который звонит человеку и спрашивает. Сами данные о позиции никогда не становятся машиночитаемыми — они живут в голове одного водителя, по одному звонку за раз. PingPoint делает саму позицию доступной через API: водитель устанавливает одно приложение по SMS-ссылке, и с этого момента любое ПО — или любой ИИ-агент через MCP — читает живую GPS-позицию, а не просит кого-то набрать номер.
Related MCP server: ThinAir Geo
Как это работает
1. Груз создается через API
POST /v1/agent/loads с телефоном водителя и остановками. Обязательные: driverPhone (E.164 — ссылка для водителя отправляется по SMS на этот номер) и массивы pickups / deliveries; каждая остановка требует address, city, state, zip. Поддерживаются многоостановочные грузы — несколько заборов и несколько доставок, в порядке массивов.
Ответ содержит loadNumber (используется во всех последующих вызовах), публичную trackingLink для клиента и ссылки для водителя (web/app). Две страховки от двойного списания:
customerRefтакже служит ключом дедупликации — повторная отправка того же reference возвращает существующий груз (deduplicated: true) вместо создания дубликата;заголовок
Idempotency-Keyделает повторные попытки после сетевого сбоя безопасными — баланс списывается и груз создаётся не более одного раза.
2. Водитель подключается по SMS-ссылке
PingPoint автоматически отправляет водителю ссылку по SMS. Ссылка открывает онбординг: установите приложение, пройдите согласие, готово — примерно минута времени водителя, один раз. Под капотом ссылка содержит одноразовый токен загрузки, который приложение обменивает на постоянный токен устройства, так что следующий груз на тот же номер телефона привязывается без какой-либо новой настройки.
3. Позиция поступает по двум независимым каналам
Телефон водителя — фоновая геолокация из приложения.
ELD-донгл на диагностическом порту грузовика — передаёт данные автомобиля по Bluetooth в приложение, которое их ретранслирует. Протестировано с оборудованием IOSiX и Pacific Track PT30. Донгл излучает кадры с частотой 1 Гц; приложение прореживает их перед загрузкой, чтобы сохранённый трек оставался достаточно плотным для геозон, не перегружая конвейер.
Телефон остаётся шлюзом для обоих каналов — донгл общается с приложением, а не с сетью. Смысл двух источников в том, что они отказывают по-разному: донгл продолжает передавать позиции, пока работает двигатель, даже если GPS телефона не может получить сигнал или ОС ограничила фоновую геолокацию. Кадры донгла также несут собственные временные метки, взятые из самого кадра, а не из момента загрузки — поэтому когда буферизованный бэклог сбрасывается после офлайн-периода, записанные времена являются реальными.
4. Статусы обновляются по геозонам — никогда с клавиатуры
Каждая остановка забора и доставки получает геозону. Вход в зону забора переводит груз в AT_PICKUP, выход — в IN_TRANSIT, вход в зону доставки — в AT_DELIVERY, а DELIVERED устанавливается, когда грузовик покидает финальную зону доставки, а не по прибытии. Единственное исключение — явный (бесплатный) вызов delivery-confirm (BOL на руках), который завершает груз, когда грузовик находится на остановке доставки. Временные метки остановок arrivedAt / departedAt берутся из тех же событий геозон.
Внешние записи статуса намеренно закрыты: PATCH …/status всегда отвечает 410 STATUS_DOOR_CLOSED. Это гарантия целостности данных, а не отсутствующая функция — статус, который вы читаете, никогда не был установлен вручную; за ним стоит записанная позиция.
5. Чтение данных
GET /v1/agent/loads/{loadNumber} возвращает живое состояние: статус, GPS-трек (до 500 последних точек), таймлайн остановок с временными метками прибытия/отправления, пройденное расстояние, время простоя, флаг своевременности и блок ETA, вычисленный на основе сохранённой геометрии маршрута и последней позиции. После поездки GET …/trip-stats возвращает агрегированную сводку, вычисленную по каждому записанному пингу. Вебхуки могут отправлять события груза на ваш эндпоинт по мере их возникновения (см. документацию).
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)Быстрый старт
Получить ключ
Зарегистрируйтесь на pingpoint.suverse.io (e-mail или Google/GitHub).
В кабинете откройте Integrations → Agent API и нажмите Issue key.
Ключ
sup_agent_…приходит по e-mail. PingPoint никогда не хранит секрет — если он потерян, выпустите новый с той же страницы.
Первый вызов
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"
}Ссылка для водителя уже отправлена на +15551234567 по SMS. Отсюда GET /v1/agent/loads/LD-2026-042317 читает живую позицию.
Подключение MCP-сервера
Claude Code, одна строка:
claude mcp add pingpoint --env PINGPOINT_AGENT_KEY=sup_agent_… -- npx -y @suverselabs/pingpoint-mcpClaude Desktop (claude_desktop_config.json) или любой агент, поддерживающий MCP:
{
"mcpServers": {
"pingpoint": {
"command": "npx",
"args": ["-y", "@suverselabs/pingpoint-mcp"],
"env": {
"PINGPOINT_AGENT_KEY": "sup_agent_…"
}
}
}
}Перезапустите агента — инструменты появятся.
MCP-инструменты
Подробный справочник по каждому инструменту с полными примерами запросов/ответов: docs/tools/.
Инструмент | Что делает | Параметры | Возвращает | Цена |
| Создаёт груз; PingPoint отправляет водителю ссылку на |
|
| $0.65 |
| Живое состояние груза |
| статус, GPS-трек (последние 500 точек), остановки с временными метками прибытия/отправления, расстояние, флаг своевременности, время простоя, блок ETA | $0.02 |
| Агрегированная сводка всей GPS-поездки (предназначена для груза со статусом DELIVERED; в середине поездки возвращает поездку на текущий момент) |
|
| $0.02 |
| Намеренно закрыт — статусы проверяются по GPS |
| всегда HTTP 410 | бесплатно |
| BOL получен → груз на остановке доставки переходит в DELIVERED (идемпотентно) |
|
| бесплатно |
| Текущий прайс-лист в USD | — |
| бесплатно |
| Предоплаченный баланс | — |
| бесплатно |
Описания инструментов написаны для вызывающей модели: каждый указывает, сколько он стоит, когда его использовать, а когда нет (например, get_load_position отвечает на вопрос «где грузовик сейчас», get_trip_stats — «как прошла завершённая поездка», и оба предупреждают о цикличном опросе, потому что каждый вызов тарифицируется).
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() }); // freeМетоды: createLoad(input, { idempotencyKey? }), getPosition(loadNumber), getTripStats(loadNumber), updateStatus(loadNumber, status) (документирован как выбрасывающий намеренный 410), confirmDelivery(loadNumber, { bolReceivedAt? }), getPricing(), getBalance(). Полный справочник: docs/sdk.md.
Каждый ответ не-2xx выбрасывает типизированный подкласс PingPointAgentError с .status и сырым .body:
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 (использует глобальный fetch), ESM + CJS, ноль зависимостей времени выполнения.
Модель данных
Позиция (get_load_position / getPosition)
Поле | Единица / формат | Значение |
| перечисление |
|
| — | До 500 последних точек, сначала старые |
| градусы | Координаты |
| миль/ч, 1 десятичный знак | Скорость по земле; |
| градусы 0–359, 0 = север |
|
| ISO 8601 UTC | Временная метка точки |
| мили | Расстояние по формуле Хаверсина по всему маршруту трек (не только по 500 возвращённым точкам); |
| ISO 8601 UTC | Заполняется по прибытии/убытии из геозоны |
| ISO 8601 UTC | Плановые окна; |
| булево | Доставлено в окно доставки (льгота 15 минут); |
| минуты |
|
| счётчик | Общее число зафиксированных для груза координат |
| объект | Следующая остановка, расстояние до неё (мили), время вождения (ч), флаг движения, окно расчётного времени прибытия; fail-soft — при недостатке данных сводится только к объекту с причиной |
Статистика рейса (get_trip_stats / getTripStats)
Поле | Единица | Значение |
| количество | GPS-пинги, записанные для перевозки |
| с |
|
| мили | Расстояние расстояния по формуле Хаверсина по всему пути записанному треке |
| миль/ч | По всему интервалу времени, включая остановки |
| миль/ч | Максимальная зафиксированная скорость по земле |
| количество | Увеличение скорости > +15 миль/ч за минуту при скорости > 20 миль/ч |
| количество | Снижение скорости < −20 миль/ч за минуту при скорости > 20 миль/ч |
| % 0–100 | Доля миль на скорости 5–40 миль/ч |
| % 0–100 | Доля миль на скорости выше 45 миль/ч |
| % 0–100 | Доля пингов при ≤5 миль/ч |
| % 0–100 | Доля пингов в период 23:00–07:00 UTC |
| % ≤100 | Отношение полученных пингов к ожидаемому одному пингу в минуту за период |
| ISO 8601 UTC | Время первого/последнего записанного пинга; |
Коды ошибок
Код | Значение |
| Обязательные поля отсутствуют — body перечисляет их в |
| Отсутствует или недействителен ключ. |
| Баланс предоплаты не покрывает операцию. Ничего не списано и ничего не создано. body содержит |
| Перевезка принадлежит другому аккаунте. |
| Такая перевозка не существует. |
| Ответ на любую внешную запись статусаba. Не сбой — так предусмотрено design. Не повторнаve запр. |
| Аккаунт ключа не зарегистрирован в PingPoint. |
| Достижение подтверждения отправлено до того, как грузовик приехал в пункт доставки. Не повторяйте — как только грузовик будет on месте, подтверждение пройдёт успешно; без него перевозка завершится автоматически при выходе из зоны доставки. |
| Платёжный backend временно недоступен — ничего не списано, повторите позже. |
Биллинг
Предоплаченный баланс, оплата за каждый вызов, без подписния. Подробности: abusiness/billing. —
actually need include link: [docs/billing.md](docs/billing.md) — now doing.
Пje pl dis: W? The link should be: docs/billing.md and the translated phrase before says "Подробности в [docs/billing.md]. Let's write.
Операция | Цена |
Создать перевозку | $0.65 |
Получить позицию перевозки | $0.02 за запрос |
Сводная статистика рейса | $0.02 за запрос |
Подтверждение доставки, получение статуса, тарифы, баланс | бесплатно |
Пополнить баланс можно в личном кабинете в разделе BillingБесплатные операции работаю при нулевом балансе.
402означает, что запрос был отклонён до совершения каких-либо изменений: ничего не создано и ничего не списано.Повторные вызовы
createLoadс тем жеIdempotency-Keyбезопасны — списание происходит не более одного раза;customerRefисключает дубли на уровне бизнес-логики.Цены в реальном времени отдаются через
GET /v1/agent/pricing— считайте это источником истины и никогда не зашивайте их.
Что это не такое
Не сертифицированный ELD. PingPoint читает GPS (и данных о дойле данные шины двигателя) для видимости. Это не зарегистрированный в FMCSA ELD и не формирует записи о соответствии HOS/RODS.
Не проверка перевозчиков. Живая позиция показывает, где находится грузовик, а не является ли перевозчик надёжным, застрахованным или реальным. Сохраняйте все существующие проверки при онбординге.
Водитель должен установить приложение. Одна ссылка по SMS, одна установка, около минуты — но это настоящий шаг, требующий cooperation. Если линейка not connected phone? Exactly: "Перевозка без связанного phone и detachme" We will not publish.
Водителю нужно установить приложение. Одна SMS-ссылка, однаью, rue, un действия; a not— dose: no: "No connected phone" -> "без подключённого телефона и без донгла" positions "не даёт позиций".
Как это compares
Корпоративные платформы отслеживания хотят, что у перевозчика уже есть телематика, а у брокера — контракт; vendors based on звонках вставлять телефонный звонок (живу, human or system) into every check. У PingPoint другой подход: one driver install in exchange for an API with payment for every call, public prices and no minimums. Фактическая и построчный сравнение с обеими группами — порядок выдачи ключей, публичные цены, API, MCP/SDK, — maintained at pingpoint.suverse.io/compare.
##Силк
Документация API: https://pingpoint.suverse.io/docs
Спецификация OpenAPI 3.1: https://pingpoint.suverse.io/docs/openapi.json
Сравнение с альтернативами: https://pingpoint.suverse.io/compare
MCP-сервер на npm: https://www.npmjs.com/package/@suverselabs/pingpoint-mcp
SDK on npm: https://www.npmjs.com/package/@suverselabs/pingpoint-sdk
Расширенные документы: architecture · billing · SDK reference · MCP tools
Контакт: info@suverse.io
Лицензия
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