PingPoint Freight MCP Server
PingPoint — 货运跟踪 MCP 服务器和 SDK
面向物流软件和 AI 代理的实时货运跟踪与货物可见性:一个 MCP 服务器和一个 TypeScript SDK,让任何代理都能获得美国卡车运输中整车货运的实时司机 GPS 位置——通过 API 创建货物,司机在大约一分钟内通过 SMS 链接连接,此后位置、ETA、站点时间线和行程后统计只需一次调用即可获得。无需 ELD 提供商集成、无需企业合同、无需销售电话。
包 | npm | 说明 |
| MCP 服务器——通过 stdio 提供 7 个工具,适用于 Claude 和任何支持 MCP 的代理 | |
| 类型化 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 数组;每个站点都需要 address、city、state、zip。支持多站点货物——多个提货点和多个交货点,按数组顺序排列。
响应中包含 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)快速开始
获取密钥
在 pingpoint.suverse.io 注册(电子邮件或 Google/GitHub)。
在控制台中打开 集成 → Agent API,然后点击 签发密钥。
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-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(幂等) |
|
| 免费 |
| 当前美元价格表 | — |
| 免费 |
| 预付余额 | — |
| 免费 |
工具描述是为调用模型编写的:每个工具都说明其费用、何时使用以及何时不使用(例如,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 个轨迹点,按时间从旧到新排列 |
| 度 | 定位坐标 |
| mph,保留 1 位小数 | 对地速度;当定位点不含速度时为 |
| 度 0–359,0 = 正北 | 未知时为 |
| ISO 8601 UTC | 定位时间戳 |
| 英里 | 基于完整轨迹的 Haversine 距离(不仅限于返回的 500 个点);在收到 ≥ 2 次 ping 之前为 |
| ISO 8601 UTC | 由地理围栏到达/离开事件设置 |
| ISO 8601 UTC | 计划时间窗,未设置时为 |
| 布尔值 | 在交付时间窗内完成交付(15 分钟宽限);在交付完成前或未设置时间窗时为 |
| 分钟 | 尚不可知时为 |
| 次数 | 该货载记录到的 ping 总数 |
| 对象 | 下一站、距其距离(英里)、行驶时间(小时)、移动标志、ETA 时间窗;故障弱化 — 数据不足时降级为仅含原因的对象 |
行程统计(get_trip_stats / getTripStats)
字段 | 单位 | 含义 |
| 次数 | 该货载记录到的 GPS ping 次数 |
| 秒 |
|
| 英里 | 基于完整记录轨迹的 Haversine 距离 |
| mph | 整个时间跨度内的平均速度,含停留时间 |
| mph | 记录到的最大对地速度 |
| 次数 | 行驶速度 > 20 mph 时,速度增益 > +15 mph/分钟 |
| 次数 | 行驶速度 > 20 mph 时,速度下降 < −20 mph/分钟 |
| % 0–100 | 5–45 mph 速度区间内的里程占比 |
| % 0–100 | 高于 45 mph 的里程占比 |
| % 0–100 | 速度 ≤ 5 mph 的 ping 占比 |
| % 0–100 | 23:00–07:00 UTC 之间的 ping 占比 |
| % ≤ 100 | 实际 ping 数 vs. 按每分钟一次推算的预期 ping 数 |
| ISO 8601 UTC | 首次/最后一次记录的 ping;无 ping 时为 |
错误码
代码 | 含义 |
| 缺少必填字段 — 响应体在 |
| 密钥缺失或无效。 |
| 预付余额不足以支付该操作。未产生任何扣费,也未创建任何内容。 响应体包含 |
| 该货载属于其他账户。 |
| 不存在该货载。 |
| 对任何外部状态写入的应答。并非故障 — 属设计如此。请勿重试。 |
| 该密钥对应的账户未在 PingPoint 上注册。 |
| 在卡车到达交付站点之前就确认了交付。请勿重试 — 卡车到达站点后确认即可成功,若未确认,货载会在驶离交付区域时自动完成。 |
| 计费后端暂时不可达 — 未产生任何扣费,请稍后重试。 |
计费
预付余额、按调用计费、无订阅。详情请见: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。
链接
OpenAPI 3.1 规范:https://pingpoint.suverse.io/docs/openapi.json
与同类产品的对比:https://pingpoint.suverse.io/compare
npm 上的 MCP 服务器:https://www.npmjs.com/package/@suverselabs/pingpoint-mcp
npm 上的 SDK:https://www.npmjs.com/package/@suverselabs/pingpoint-sdk
联系方式: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