Track-POD MCP by usefulapi
Read Track-POD orders, routes, drivers, vehicles and proof of delivery; create orders.
我該用這個嗎
品質與安全性
發現項目(1)
- LOW在 trackpod_list_orders_changed_since 中
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"track-pod": {
"url": "https://track-pod.usefulapi.io/mcp"
}
}
}遠端端點
https://track-pod.usefulapi.io/mcpstreamable-http它能做什麼
工具清單
工具(16)
🟢trackpod_list_orders(date, date_type, status, driver, route_number, ...)
List the orders of one day — by order date (GET /Order/Date/{date}) or by planned route date (GET /Order/Route/Date/{date}) — with optional filters on delivery status, driver and route number. Track-POD returns the whole day at once; this tool pages it (offset/limit) and reports the total. Times are the account's local times.
輸入結構描述
{
"type": "object",
"properties": {
"date": {
"type": "string",
"description": "The day, YYYY-MM-DD."
},
"date_type": {
"description": "order_date (default): orders whose order date is this day, scheduled or not. route_date: orders planned into routes of this day.",
"type": "string",
"enum": [
"order_date",
"route_date"
]
},
"status": {
"description": "Keep only orders with these delivery statuses: no_status (not yet attempted / unassigned), in_progress (1), not_delivered_site_issue (2), delivered (3, also 'collected'), partially (4), not_delivered_order_issue (5).",
"minItems": 1,
"maxItems": 6,
"type": "array",
"items": {
"type": "string",
"enum": [
"no_status",
"in_progress",
"not_delivered_site_issue",
"delivered",
"partially",
"not_delivered_order_issue"
]
}
},
"driver": {
"description": "Keep only orders whose driver login or name contains this text.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"route_number": {
"description": "Keep only orders on this route number/code.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"detail": {
"description": "summary (default): key fields per order. full: every field Track-POD returns (goods lines, custom fields, photo links).",
"type": "string",
"enum": [
"summary",
"full"
]
},
"offset": {
"description": "Items to skip (default 0). Use next_offset from the previous page.",
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"limit": {
"description": "Items per page (default 25, max 100).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"required": [
"date"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢trackpod_list_orders_changed_since(since, status, detail, offset, limit)
List orders whose delivery status changed after a moment in the last 24 hours (GET /Order/Status/Date/{date-time}; Track-POD accepts no earlier time than UTC now − 1 day). Good for 'what was delivered / failed since this morning'. Paged here (offset/limit).
輸入結構描述
{
"type": "object",
"properties": {
"since": {
"description": "ISO 8601 date-time with a timezone, within the last 24 hours, e.g. 2026-10-08T06:00:00Z. Default: 23 h 59 min ago.",
"type": "string"
},
"status": {
"description": "Keep only orders with these delivery statuses: no_status (not yet attempted / unassigned), in_progress (1), not_delivered_site_issue (2), delivered (3, also 'collected'), partially (4), not_delivered_order_issue (5).",
"minItems": 1,
"maxItems": 6,
"type": "array",
"items": {
"type": "string",
"enum": [
"no_status",
"in_progress",
"not_delivered_site_issue",
"delivered",
"partially",
"not_delivered_order_issue"
]
}
},
"detail": {
"description": "summary (default): key fields per order. full: every field Track-POD returns (goods lines, custom fields, photo links).",
"type": "string",
"enum": [
"summary",
"full"
]
},
"offset": {
"description": "Items to skip (default 0). Use next_offset from the previous page.",
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"limit": {
"description": "Items per page (default 25, max 100).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢trackpod_list_route_orders(route_code, status, detail, offset, limit)
List the orders on one route, in route order, by route code (GET /Order/Route/Code/{code}). Paged here (offset/limit).
輸入結構描述
{
"type": "object",
"properties": {
"route_code": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "The route code/number, e.g. R-1023."
},
"status": {
"description": "Keep only orders with these delivery statuses: no_status (not yet attempted / unassigned), in_progress (1), not_delivered_site_issue (2), delivered (3, also 'collected'), partially (4), not_delivered_order_issue (5).",
"minItems": 1,
"maxItems": 6,
"type": "array",
"items": {
"type": "string",
"enum": [
"no_status",
"in_progress",
"not_delivered_site_issue",
"delivered",
"partially",
"not_delivered_order_issue"
]
}
},
"detail": {
"description": "summary (default): key fields per order. full: every field Track-POD returns (goods lines, custom fields, photo links).",
"type": "string",
"enum": [
"summary",
"full"
]
},
"offset": {
"description": "Items to skip (default 0). Use next_offset from the previous page.",
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"limit": {
"description": "Items per page (default 25, max 100).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"required": [
"route_code"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢trackpod_get_order(number, order_id, track_id)
Get one order with every field: client, address, time slot, goods lines, route, driver, delivery status, ETA, signature/photo links and tracking link. Pass exactly one of number, order_id or track_id (GET /Order/Number|Id|TrackId/{…}). A removed order answers with who removed it (HTTP 410).
輸入結構描述
{
"type": "object",
"properties": {
"number": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "The order number (Order/Invoice/Job/Waybill number), e.g. cv30001-2."
},
"order_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "The order Id — the unique identifier from your accounting system that the order was created with."
},
"track_id": {
"description": "The order TrackId (UUID) from a tracking link or a webhook.",
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢trackpod_find_orders_by_number(number, detail)
List the last 25 orders that share one order number (re-deliveries, repeated jobs) — GET /Order/Number/{number}/List. Use it when an order number was reused and trackpod_get_order returns only one of them.
輸入結構描述
{
"type": "object",
"properties": {
"number": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "The order number."
},
"detail": {
"description": "summary (default): key fields per order. full: every field Track-POD returns (goods lines, custom fields, photo links).",
"type": "string",
"enum": [
"summary",
"full"
]
}
},
"required": [
"number"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢trackpod_get_proof_of_delivery(number, order_id, track_id)
Get the electronic proof of delivery (ePOD) of one order: status and status time/GPS, who signed, signature and photo links (valid 24 h), driver comment, reject reasons, delivered vs ordered goods quantities, cash collected, customer feedback and the PDF delivery-note link (ReportUrl, valid 1 h). Pass exactly one of number, order_id or track_id.
輸入結構描述
{
"type": "object",
"properties": {
"number": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "The order number (Order/Invoice/Job/Waybill number), e.g. cv30001-2."
},
"order_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "The order Id — the unique identifier from your accounting system that the order was created with."
},
"track_id": {
"description": "The order TrackId (UUID) from a tracking link or a webhook.",
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢trackpod_list_reject_reasons
List the account's reasons for not delivering / not collecting: site, order, goods and scanning issues (GET /RejectReason).
輸入結構描述
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢trackpod_list_routes(date, status, include_orders, offset, limit)
List the routes of one day (GET /Route/Date/{date}): code, status (Draft, Ready, Loaded, InProgress, Closed), driver, vehicle, planned vs actual start/finish, distance, cost, current GPS position, and per-route order counts by status. Paged here (offset/limit).
輸入結構描述
{
"type": "object",
"properties": {
"date": {
"type": "string",
"description": "The route date, YYYY-MM-DD."
},
"status": {
"description": "Keep only routes with these statuses.",
"minItems": 1,
"maxItems": 5,
"type": "array",
"items": {
"type": "string",
"enum": [
"Draft",
"Ready",
"Loaded",
"InProgress",
"Closed"
]
}
},
"include_orders": {
"description": "none (default): order counts only. summary: key fields of each order. full: every order field (large).",
"type": "string",
"enum": [
"none",
"summary",
"full"
]
},
"offset": {
"description": "Items to skip (default 0). Use next_offset from the previous page.",
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"limit": {
"description": "Items per page (default 25, max 100).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"required": [
"date"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢trackpod_get_route(route_code, route_id, include_orders)
Get one route with its status, driver, vehicle, timings, distance, cost, current GPS position and its orders. Pass exactly one of route_code or route_id (GET /Route/Code|Id/{…}).
輸入結構描述
{
"type": "object",
"properties": {
"route_code": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "The route code/number."
},
"route_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "The route Id from your accounting system."
},
"include_orders": {
"description": "summary (default): key fields of each order. none: counts only. full: every order field.",
"type": "string",
"enum": [
"none",
"summary",
"full"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢trackpod_get_route_track(route_code, route_id, offset, limit)
Get the driver's recorded GPS track of a route (latitude, longitude, speed in m/s, time) — GET /Route/Track/Code|Id/{…}. Pass exactly one of route_code or route_id. Points are paged here (offset/limit, max 1000 per call).
輸入結構描述
{
"type": "object",
"properties": {
"route_code": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "The route code/number."
},
"route_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "The route Id from your accounting system."
},
"offset": {
"description": "Items to skip (default 0). Use next_offset from the previous page.",
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"limit": {
"description": "Points per page (default 200, max 1000).",
"type": "integer",
"minimum": 1,
"maximum": 1000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢trackpod_list_drivers(active_only, search, offset, limit)
List the account's drivers: name, username, phone, vehicle, depot, zone, teams and active flag (GET /Driver). Paged here.
輸入結構描述
{
"type": "object",
"properties": {
"active_only": {
"description": "Only active drivers (default false = all).",
"type": "boolean"
},
"search": {
"description": "Keep only drivers whose name, username, phone or vehicle contains this text.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"offset": {
"description": "Items to skip (default 0). Use next_offset from the previous page.",
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"limit": {
"description": "Items per page (default 25, max 100).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢trackpod_get_driver(driver_id, username)
Get one driver by Track-POD id (UUID) or by username (GET /Driver/Id/{id} or /Driver/Username/{username}). Pass exactly one.
輸入結構描述
{
"type": "object",
"properties": {
"driver_id": {
"description": "The driver's Track-POD id (UUID, from trackpod_list_drivers).",
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
},
"username": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "The driver's username (login)."
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢trackpod_list_vehicles(number, offset, limit)
List the account's vehicles: plate number, assigned driver, depot, capacity (weight/volume/pallets/size), limits, costs, type and carrier (GET /Vehicle, optional plate-number filter). Paged here.
輸入結構描述
{
"type": "object",
"properties": {
"number": {
"description": "Filter by vehicle (plate) number.",
"type": "string",
"minLength": 1,
"maxLength": 30
},
"offset": {
"description": "Items to skip (default 0). Use next_offset from the previous page.",
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"limit": {
"description": "Items per page (default 25, max 100).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢trackpod_get_vehicle(vehicle_id)
Get one vehicle by its Track-POD id (an integer, from trackpod_list_vehicles) — GET /Vehicle/{id}.
輸入結構描述
{
"type": "object",
"properties": {
"vehicle_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The vehicle's Track-POD id."
}
},
"required": [
"vehicle_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢trackpod_list_vehicle_checks(date, vehicle_number, offset, limit)
Driver vehicle inspections (before/after route): checklist items with pass/fail, notes, photo links (valid 24 h), odometer and signature. date only: every check of that day (GET /VehicleCheck/Date/{date}); date + vehicle_number: that vehicle's checks of the day; vehicle_number only: that vehicle's last check (GET /VehicleCheck/{number}).
輸入結構描述
{
"type": "object",
"properties": {
"date": {
"description": "The day, YYYY-MM-DD.",
"type": "string"
},
"vehicle_number": {
"description": "The vehicle (plate) number.",
"type": "string",
"minLength": 1,
"maxLength": 30
},
"offset": {
"description": "Items to skip (default 0). Use next_offset from the previous page.",
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"limit": {
"description": "Items per page (default 25, max 100).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴trackpod_create_order(number, client, address, type, date, ...)
Create ONE REAL unscheduled order in Track-POD (POST /Order): a delivery or a collection for a client at an address, ready to be planned into a route by a dispatcher. It does not create or optimise routes. Depending on the account's notification settings the customer may later receive SMS/e-mail updates about it. Confirm the details with the user first. Address and client are required; Track-POD geocodes the address unless you pass address_lat/address_lon.
輸入結構描述
{
"type": "object",
"properties": {
"number": {
"type": "string",
"minLength": 1,
"maxLength": 50,
"description": "The order number (your Order/Invoice/Job/Waybill number) — used later to look the order up, so no slash or backslash."
},
"client": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "Client/customer name."
},
"address": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "Delivery (or pickup) address, e.g. '2 St Josephs Crescent, Liverpool L3 3JF'."
},
"type": {
"description": "delivery (default) or collection.",
"type": "string",
"enum": [
"delivery",
"collection"
]
},
"date": {
"description": "Order date, YYYY-MM-DD.",
"type": "string"
},
"order_id": {
"description": "Your accounting-system id for the order.",
"type": "string",
"minLength": 1,
"maxLength": 50
},
"depot": {
"description": "Depot address (else the account's default depot).",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"shipper": {
"description": "Shipper/supplier name.",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"address_lat": {
"description": "Address latitude (pass with address_lon to skip geocoding).",
"type": "number",
"minimum": -90,
"maximum": 90
},
"address_lon": {
"description": "Address longitude.",
"type": "number",
"minimum": -180,
"maximum": 180
},
"address_zone": {
"description": "Address zone.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"time_slot_from": {
"description": "Desired delivery/pickup window start, local 24-hour time HH:mm.",
"type": "string"
},
"time_slot_to": {
"description": "Desired delivery/pickup window end, local 24-hour time HH:mm.",
"type": "string"
},
"service_time_minutes": {
"description": "Service time at the stop, minutes.",
"type": "number",
"minimum": 0,
"maximum": 1440
},
"note": {
"description": "Note for the driver.",
"type": "string",
"minLength": 1,
"maxLength": 500
},
"contact_name": {
"description": "Customer contact name.",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"phone": {
"description": "Customer contact phone.",
"type": "string",
"minLength": 1,
"maxLength": 50
},
"email": {
"description": "Customer e-mail.",
"type": "string",
"maxLength": 255,
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"weight": {
"description": "Total weight.",
"type": "number",
"minimum": 0
},
"volume": {
"description": "Total volume.",
"type": "number",
"minimum": 0
},
"pallets": {
"description": "Pallet count.",
"type": "number",
"minimum": 0
},
"cod": {
"description": "Cash-on-delivery amount to collect.",
"type": "number",
"minimum": 0
},
"barcode": {
"description": "Barcode the driver scans.",
"type": "string",
"minLength": 1,
"maxLength": 128
},
"priority": {
"description": "Order priority.",
"type": "string",
"enum": [
"low",
"normal",
"high"
]
},
"goods": {
"description": "Goods lines (max 100).",
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "Item description."
},
"quantity": {
"description": "Quantity or weight.",
"type": "number",
"minimum": 0
},
"unit": {
"description": "Unit: pcs, pkg, kg, lbs …",
"type": "string",
"minLength": 1,
"maxLength": 50
},
"cost": {
"description": "Unit price.",
"type": "number",
"minimum": 0
},
"goods_id": {
"description": "Goods id in your accounting system.",
"type": "string",
"minLength": 1,
"maxLength": 50
},
"note": {
"description": "Line note.",
"type": "string",
"minLength": 1,
"maxLength": 255
}
},
"required": [
"name"
]
}
}
},
"required": [
"number",
"client",
"address"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}社群
證據