Skip to main content
Glama
sudzikcoin

PingPoint Freight MCP Server

by sudzikcoin

PingPoint — 货运跟踪 MCP 服务器和 SDK

面向物流软件和 AI 代理的实时货运跟踪与货物可见性:一个 MCP 服务器和一个 TypeScript SDK,让任何代理都能获得美国卡车运输中整车货运的实时司机 GPS 位置——通过 API 创建货物,司机在大约一分钟内通过 SMS 链接连接,此后位置、ETA、站点时间线和行程后统计只需一次调用即可获得。无需 ELD 提供商集成、无需企业合同、无需销售电话。

npm

说明

@suverselabs/pingpoint-mcp

npm i @suverselabs/pingpoint-mcp

MCP 服务器——通过 stdio 提供 7 个工具,适用于 Claude 和任何支持 MCP 的代理

@suverselabs/pingpoint-sdk

npm i @suverselabs/pingpoint-sdk

类型化 API 客户端——零依赖、类型化错误、幂等重试

完整 API 文档:https://pingpoint.suverse.io/docs · OpenAPI 3.1 规范:/docs/openapi.json

问题

美国货运中的大多数承运商都是一两辆卡车的小公司。他们没有企业远程信息处理技术栈,没有可见性合同,也没有 IT 部门——卡车就是公司。当经纪人需要知道货物在哪里时,唯一可靠的工具就是给司机打电话。

这就是为什么如今大多数供应商的“AI 跟踪与追溯”意味着一个机器人打电话给人并询问。位置数据本身从未变成机器可读的——它存在于一个个司机的脑中,一次只通过一个电话获取。PingPoint 通过 API 让位置本身可用:司机从 SMS 链接安装一个应用,从那一刻起,任何软件——或任何通过 MCP 的 AI 代理——读取实时 GPS,而不是让人拨打电话。

Related MCP server: ThinAir Geo

工作原理

1. 通过 API 创建货物

POST /v1/agent/loads 需要司机电话和站点。必填项:driverPhone(E.164 — 司机链接通过短信发送到此号码)以及 pickups / deliveries 数组;每个站点都需要 addresscitystatezip。支持多站点货物——多个提货点和多个交货点,按数组顺序排列。

响应中包含 loadNumber(用于之后的每次调用)、面向客户的公开 trackingLink,以及司机网页/应用链接。防止重复收费的两道安全网:

  • customerRef 兼作去重键——重新发送相同的引用会返回现有货物(deduplicated: true),而不是创建重复项;

  • Idempotency-Key 请求头让网络故障后的重试变得安全——余额最多扣费一次,货物最多创建一次。

2. 司机通过 SMS 链接连接

PingPoint 自动向司机发送一条带链接的短信。该链接打开引导流程:安装应用、点按同意、完成——只需司机大约一分钟的时间,且只需一次。在底层,该链接携带一个一次性的货物令牌,应用会将其换为持久的设备令牌,因此下一次发送到相同电话号码的货物无需任何新设置即可绑定。

3. 位置通过两条独立通道流入

  • 司机手机——应用中的后台地理位置定位。

  • 卡车诊断端口上的 ELD 加密狗——通过蓝牙将车辆数据流式传输到应用,由应用转发。已使用 IOSiX 和 Pacific Track PT30 硬件测试。加密狗以 1 Hz 频率发出帧;应用在上传前对帧进行抽稀,使存储的轨迹保持足够密集以用于地理围栏,同时又不会淹没管道。

手机仍然是两个通道的网关——加密狗与应用通信,而不是与网络通信。两个数据源的意义在于它们以不同的方式失效:即使手机 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 返回根据每条记录的 ping 计算的汇总摘要。Webhooks 可以在货物事件发生时将其推送到你的端点(参见文档)。

 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)

快速开始

获取密钥

  1. pingpoint.suverse.io 注册(电子邮件或 Google/GitHub)。

  2. 在控制台中打开 集成 → Agent API,然后点击 签发密钥

  3. sup_agent_… 密钥会通过电子邮件发送。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。从这里,GET /v1/agent/loads/LD-2026-042317 可以读取实时位置。

连接 MCP 服务器

Claude Code,一行命令:

claude mcp add pingpoint --env PINGPOINT_AGENT_KEY=sup_agent_… -- npx -y @suverselabs/pingpoint-mcp

Claude Desktop(claude_desktop_config.json)或任何支持 MCP 的代理:

{
  "mcpServers": {
    "pingpoint": {
      "command": "npx",
      "args": ["-y", "@suverselabs/pingpoint-mcp"],
      "env": {
        "PINGPOINT_AGENT_KEY": "sup_agent_…"
      }
    }
  }
}

重启代理,工具就会出现。

MCP 工具

包含完整请求/响应示例的详细逐工具参考:docs/tools/

工具

功能

参数

返回值

价格

create_load

创建货运货物;PingPoint 将司机链接通过短信发送到 driverPhone

driverPhonepickups[]deliveries[](必填);shipperNamecarrierNameequipmentTypecustomerRefratemilesweighttruckNumberidempotencyKey(可选)

loadNumber、公开的 trackingLink、司机网页/应用链接、driverResolution、去重标志

$0.65

get_load_position

货物的实时状态

loadNumber

状态、GPS 轨迹(最近 500 个点)、带有到达/离开时间戳的站点、距离、准时标志、停留时间、ETA 区块

$0.02

get_trip_stats

整个 GPS 行程的汇总摘要(适用于已 DELIVERED 的货物;行程中会返回截至目前的行程)

loadNumber

stats:距离、持续时间、平均/最大速度、急加速/急刹车次数、城市/高速/停车/夜间占比、GPS 覆盖率、首次/最后一次 ping

$0.02

update_load_status

有意关闭——状态均经 GPS 验证

loadNumberstatus

始终返回 HTTP 410 STATUS_DOOR_CLOSED

免费

confirm_delivery

已收到 BOL → 位于交货站点的货物切换为 DELIVERED(幂等)

loadNumberbolReceivedAt(可选,ISO 8601)

{ ok, oldStatus, newStatus: "DELIVERED" }

免费

get_pricing

当前美元价格表

{ currency, prices }

免费

get_balance

预付余额

{ currency, balanceUsd }

免费

工具描述是为调用模型编写的:每个工具都说明其费用、何时使用以及何时不使用(例如,get_load_position 回答“卡车现在在哪里”,get_trip_stats 回答“已完成的行程如何”,并且两者都警告不要循环轮询,因为每次调用都会计费)。

SDK

npm install @suverselabs/pingpoint-sdk
import { 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

字段

单位 / 格式

含义

status

枚举

PLANNEDAT_PICKUPIN_TRANSITAT_DELIVERYDELIVEREDCANCELLED — 由 GPS 和地理围栏事件自动推进

gpsTrack[]

最近最多 500 个轨迹点,按时间从旧到新排列

gpsTrack[].lat / lng

定位坐标

gpsTrack[].speed

mph,保留 1 位小数

对地速度;当定位点不含速度时为 null

gpsTrack[].heading

度 0–359,0 = 正北

未知时为 null

gpsTrack[].ts

ISO 8601 UTC

定位时间戳

distanceMiles

英里

基于完整轨迹的 Haversine 距离(不仅限于返回的 500 个点);在收到 ≥ 2 次 ping 之前为 null

stops[].arrivedAt / departedAt

ISO 8601 UTC

由地理围栏到达/离开事件设置

stops[].windowFrom / windowTo

ISO 8601 UTC

计划时间窗,未设置时为 null

onTime

布尔值

在交付时间窗内完成交付(15 分钟宽限);在交付完成前或未设置时间窗时为 null

delayMinutespickupDwellMinutesdeliveryDwellMinutes

分钟

尚不可知时为 null

pingCount

次数

该货载记录到的 ping 总数

eta

对象

下一站、距其距离(英里)、行驶时间(小时)、移动标志、ETA 时间窗;故障弱化 — 数据不足时降级为仅含原因的对象

行程统计(get_trip_stats / getTripStats

字段

单位

含义

dataPoints

次数

该货载记录到的 GPS ping 次数

durationSeconds

lastAt − firstAt

estimatedDistanceMiles

英里

基于完整记录轨迹的 Haversine 距离

avgSpeedMph

mph

整个时间跨度内的平均速度,含停留时间

maxSpeedMph

mph

记录到的最大对地速度

hardAccelCount

次数

行驶速度 > 20 mph 时,速度增益 > +15 mph/分钟

hardBrakeCount

次数

行驶速度 > 20 mph 时,速度下降 < −20 mph/分钟

cityMilesPct

% 0–100

5–45 mph 速度区间内的里程占比

highwayMilesPct

% 0–100

高于 45 mph 的里程占比

parkedTimePct

% 0–100

速度 ≤ 5 mph 的 ping 占比

nightPct

% 0–100

23:00–07:00 UTC 之间的 ping 占比

coveragePct

% ≤ 100

实际 ping 数 vs. 按每分钟一次推算的预期 ping 数

firstAt / lastAt

ISO 8601 UTC

首次/最后一次记录的 ping;无 ping 时为 null

错误码

代码

含义

400 MISSING_FIELDS

缺少必填字段 — 响应体在 fields[] 中列出缺失字段(点分路径,例如 pickups.0.zip)。当电话号码不符合 E.164 格式时,也会返回 400 INVALID_DRIVER_PHONE

401

密钥缺失或无效。

402 INSUFFICIENT_FUNDS

预付余额不足以支付该操作。未产生任何扣费,也未创建任何内容。 响应体包含 balanceUsdpriceUsdbillingUrl

403

该货载属于其他账户。

404

不存在该货载。

410 STATUS_DOOR_CLOSED

对任何外部状态写入的应答。并非故障 — 属设计如此。请勿重试。

422 UNKNOWN_BROKER

该密钥对应的账户未在 PingPoint 上注册。

422 + reason: bol_received_before_geofence_arrive

在卡车到达交付站点之前就确认了交付。请勿重试 — 卡车到达站点后确认即可成功,若未确认,货载会在驶离交付区域时自动完成。

503 BILLING_UNAVAILABLE

计费后端暂时不可达 — 未产生任何扣费,请稍后重试。

计费

预付余额、按调用计费、无订阅。详情请见:docs/billing.md

操作

价格

创建货载

$0.65

查询货载位置

每次请求 $0.02

行程汇总统计

每次请求 $0.02

交付确认、状态端点、定价、余额查询

免费

  • 在控制台的计费(Billing)下充值。免费操作在零余额时也可正常使用。

  • 402 表示调用在任何操作发生之前被拒绝:未创建任何内容,未产生任何扣费。

  • 使用相同的 Idempotency-Key 重试 createLoad 是安全的 — 扣费最多发生一次;customerRef 在业务层面进行去重。

  • 价格由 GET /v1/agent/pricing 实时提供 — 请以此作为唯一权威来源,切勿硬编码。

本产品不是什么

  • 不是经认证的 ELD。 PingPoint 读取 GPS(以及通过车载诊断接口读取发动机总线数据)用于可视化管理。它不是 FMCSA 注册的 ELD,也不生成 HOS/RODS 合规记录。

  • 不是承运商资质审核。 实时位置只能告诉你卡车在哪里,不能说明承运商是否安全、有保险或真实存在。请保留您目前已有的任何准入审核流程。

  • 司机需要安装应用。 一条短信链接、一次安装、大约一分钟 — 但这是一个真实步骤,需要司机的配合。没有连接手机也没有车载诊断接口的货载不会产生任何位置数据。

与同类产品的对比

企业级可视化平台假设承运商已具备远程信息处理系统、经纪商已签订合同;基于电话查询的供应商则在每次查询时都插入一通电话(人工或机器人)。PingPoint 的取舍不同:以司机端的一次安装,换取按调用计费、价格公开、无最低消费的 API。与这两类产品的逐项事实对比 — 密钥发放、公开定价、API 面、MCP/SDK 可用性 — 请参阅 pingpoint.suverse.io/compare

链接

许可证

MIT © 2026 Sudzik Group Inc.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides 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.
    2
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Quote, 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.
    20
    395
    3
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
    30
    MIT

View all related MCP servers

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

View all MCP Connectors

Latest Blog Posts

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