# Track-POD MCP by usefulapi (remote · track-pod.usefulapi.io)

Read Track-POD orders, routes, drivers, vehicles and proof of delivery; create orders.

- Trust score: 65/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-16

## Components

- remote · `track-pod.usefulapi.io`: 65/100 (this document), [markdown](https://verifymcp.io/servers/io-usefulapi-track-pod/track-pod.md), [page](https://verifymcp.io/servers/io-usefulapi-track-pod/track-pod)

## Channel facts

- Endpoint: `https://track-pod.usefulapi.io/mcp`
- Transports: `streamable-http`
- Auth: `required`
- Version: `1.2.1`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-16.

- **Endpoint Security**: 78/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token.
  - HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
  - The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents.
- **Transport & Reachability**: 0/100
  - Transport check failed: declared streamable-http, but the endpoint redirected instead of responding directly.
- **Schema Quality & AI Usability**: 79/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2848 tokens (~178/item across 16 items; 16 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 20/100
  - Stability observed for 6 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 16 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 17 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

## Install

### How do I install the Track-POD MCP by usefulapi server?

Track-POD MCP by usefulapi is a hosted endpoint at https://track-pod.usefulapi.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http io-usefulapi-track-pod 'https://track-pod.usefulapi.io/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "io-usefulapi-track-pod": {
      "url": "https://track-pod.usefulapi.io/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "io-usefulapi-track-pod": {
      "type": "http",
      "url": "https://track-pod.usefulapi.io/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.io-usefulapi-track-pod]
url = "https://track-pod.usefulapi.io/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-usefulapi-track-pod": {
      "type": "remote",
      "url": "https://track-pod.usefulapi.io/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add io-usefulapi-track-pod --url 'https://track-pod.usefulapi.io/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  io-usefulapi-track-pod:
    url: "https://track-pod.usefulapi.io/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "io-usefulapi-track-pod": {
      "Transport": "http",
      "Url": "https://track-pod.usefulapi.io/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add io-usefulapi-track-pod -t streamable-http -u 'https://track-pod.usefulapi.io/mcp'
```

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-track-pod": {
      "type": "http",
      "url": "https://track-pod.usefulapi.io/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-16 (score 65, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-14 (score 64, +1)

No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-13 (score 63, +2)

- [security] The server rewrote its instructions, which are the text every model session reads
- [functional] The server now declares the “prompts” capability
- [functional] First check of Schema quality: 100
- [functional] New prompt “getting_started”
- [functional] Server version: 1.4.0 → 1.5.0

### 2026-10-12 (score 61, +1)

- [functional improvement] Stability: unverified → 0.07

### 2026-10-10 (score 60)

First indexed and scored.

## MCP tools (16)

### `trackpod_list_orders` (~303 tokens)

List orders for a day

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.

Input parameters:

- `date` (string, required): The day, YYYY-MM-DD.
- `date_type` (string): order_date (default): orders whose order date is this day, scheduled or not. route_date: orders planned into routes of this day.
- `detail` (string): summary (default): key fields per order. full: every field Track-POD returns (goods lines, custom fields, photo links).
- `driver` (string): Keep only orders whose driver login or name contains this text.
- `limit` (integer): Items per page (default 25, max 100).
- `offset` (integer): Items to skip (default 0). Use next_offset from the previous page.
- `route_number` (string): Keep only orders on this route number/code.
- `status` (array): 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…

### `trackpod_list_orders_changed_since` (~256 tokens)

List orders with a recent status change

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).

Input parameters:

- `detail` (string): summary (default): key fields per order. full: every field Track-POD returns (goods lines, custom fields, photo links).
- `limit` (integer): Items per page (default 25, max 100).
- `offset` (integer): Items to skip (default 0). Use next_offset from the previous page.
- `since` (string): 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.
- `status` (array): 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…

### `trackpod_list_route_orders` (~196 tokens)

List the orders of a route

List the orders on one route, in route order, by route code (GET /Order/Route/Code/{code}). Paged here (offset/limit).

Input parameters:

- `detail` (string): summary (default): key fields per order. full: every field Track-POD returns (goods lines, custom fields, photo links).
- `limit` (integer): Items per page (default 25, max 100).
- `offset` (integer): Items to skip (default 0). Use next_offset from the previous page.
- `route_code` (string, required): The route code/number, e.g. R-1023.
- `status` (array): 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…

### `trackpod_get_order` (~157 tokens)

Get an order

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).

Input parameters:

- `number` (string): The order number (Order/Invoice/Job/Waybill number), e.g. cv30001-2.
- `order_id` (string): The order Id — the unique identifier from your accounting system that the order was created with.
- `track_id` (string): The order TrackId (UUID) from a tracking link or a webhook.

### `trackpod_find_orders_by_number` (~105 tokens)

Find orders by number

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.

Input parameters:

- `detail` (string): summary (default): key fields per order. full: every field Track-POD returns (goods lines, custom fields, photo links).
- `number` (string, required): The order number.

### `trackpod_get_proof_of_delivery` (~168 tokens)

Get proof of delivery

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.

Input parameters:

- `number` (string): The order number (Order/Invoice/Job/Waybill number), e.g. cv30001-2.
- `order_id` (string): The order Id — the unique identifier from your accounting system that the order was created with.
- `track_id` (string): The order TrackId (UUID) from a tracking link or a webhook.

### `trackpod_list_reject_reasons` (~39 tokens)

List reject reasons

List the account's reasons for not delivering / not collecting: site, order, goods and scanning issues (GET /RejectReason).

### `trackpod_list_routes` (~174 tokens)

List routes for a day

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).

Input parameters:

- `date` (string, required): The route date, YYYY-MM-DD.
- `include_orders` (string): none (default): order counts only. summary: key fields of each order. full: every order field (large).
- `limit` (integer): Items per page (default 25, max 100).
- `offset` (integer): Items to skip (default 0). Use next_offset from the previous page.
- `status` (array): Keep only routes with these statuses.

### `trackpod_get_route` (~111 tokens)

Get a route

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/{…}).

Input parameters:

- `include_orders` (string): summary (default): key fields of each order. none: counts only. full: every order field.
- `route_code` (string): The route code/number.
- `route_id` (string): The route Id from your accounting system.

### `trackpod_get_route_track` (~141 tokens)

Get a route's GPS track

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).

Input parameters:

- `limit` (integer): Points per page (default 200, max 1000).
- `offset` (integer): Items to skip (default 0). Use next_offset from the previous page.
- `route_code` (string): The route code/number.
- `route_id` (string): The route Id from your accounting system.

### `trackpod_list_drivers` (~119 tokens)

List drivers

List the account's drivers: name, username, phone, vehicle, depot, zone, teams and active flag (GET /Driver). Paged here.

Input parameters:

- `active_only` (boolean): Only active drivers (default false = all).
- `limit` (integer): Items per page (default 25, max 100).
- `offset` (integer): Items to skip (default 0). Use next_offset from the previous page.
- `search` (string): Keep only drivers whose name, username, phone or vehicle contains this text.

### `trackpod_get_driver` (~80 tokens)

Get a driver

Get one driver by Track-POD id (UUID) or by username (GET /Driver/Id/{id} or /Driver/Username/{username}). Pass exactly one.

Input parameters:

- `driver_id` (string): The driver's Track-POD id (UUID, from trackpod_list_drivers).
- `username` (string): The driver's username (login).

### `trackpod_list_vehicles` (~111 tokens)

List vehicles

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.

Input parameters:

- `limit` (integer): Items per page (default 25, max 100).
- `number` (string): Filter by vehicle (plate) number.
- `offset` (integer): Items to skip (default 0). Use next_offset from the previous page.

### `trackpod_get_vehicle` (~52 tokens)

Get a vehicle

Get one vehicle by its Track-POD id (an integer, from trackpod_list_vehicles) — GET /Vehicle/{id}.

Input parameters:

- `vehicle_id` (integer, required): The vehicle's Track-POD id.

### `trackpod_list_vehicle_checks` (~158 tokens)

List vehicle checks

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}).

Input parameters:

- `date` (string): The day, YYYY-MM-DD.
- `limit` (integer): Items per page (default 25, max 100).
- `offset` (integer): Items to skip (default 0). Use next_offset from the previous page.
- `vehicle_number` (string): The vehicle (plate) number.

### `trackpod_create_order` (~473 tokens)

Create an order

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.

Input parameters:

- `address` (string, required): Delivery (or pickup) address, e.g. '2 St Josephs Crescent, Liverpool L3 3JF'.
- `address_lat` (number): Address latitude (pass with address_lon to skip geocoding).
- `address_lon` (number): Address longitude.
- `address_zone` (string): Address zone.
- `barcode` (string): Barcode the driver scans.
- `client` (string, required): Client/customer name.
- `cod` (number): Cash-on-delivery amount to collect.
- `contact_name` (string): Customer contact name.
- `date` (string): Order date, YYYY-MM-DD.
- `depot` (string): Depot address (else the account's default depot).
- `email` (string): Customer e-mail.
- `goods` (array): Goods lines (max 100).
- `note` (string): Note for the driver.
- `number` (string, required): The order number (your Order/Invoice/Job/Waybill number) — used later to look the order up, so no slash or backslash.
- `order_id` (string): Your accounting-system id for the order.
- `pallets` (number): Pallet count.
- `phone` (string): Customer contact phone.
- `priority` (string): Order priority.
- `service_time_minutes` (number): Service time at the stop, minutes.
- `shipper` (string): Shipper/supplier name.
- `time_slot_from` (string): Desired delivery/pickup window start, local 24-hour time HH:mm.
- `time_slot_to` (string): Desired delivery/pickup window end, local 24-hour time HH:mm.
- `type` (string): delivery (default) or collection.
- `volume` (number): Total volume.
- `weight` (number): Total weight.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/io-usefulapi-track-pod/track-pod#diagnostics

## Score history

- 2026-10-16: 65
- 2026-10-15: 64
- 2026-10-14: 64
- 2026-10-13: 63
- 2026-10-12: 61
- 2026-10-10: 60

## Common questions

### What is the Track-POD MCP by usefulapi server?

Track-POD MCP by usefulapi is listed in the public MCP registry as io.usefulapi/track-pod. Read Track-POD orders, routes, drivers, vehicles and proof of delivery; create orders. This page covers its hosted endpoint (https://track-pod.usefulapi.io/mcp).

### Is the Track-POD MCP by usefulapi server safe to use?

Track-POD MCP by usefulapi scores 65 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Track-POD MCP by usefulapi server expose?

Track-POD MCP by usefulapi exposes 16 tools: trackpod_list_orders, trackpod_list_orders_changed_since, trackpod_list_route_orders, trackpod_get_order, trackpod_find_orders_by_number, and 11 more. Their descriptions and schemas cost roughly 2,643 tokens of context every time the server is loaded.

### Does the Track-POD MCP by usefulapi server require authentication?

Yes. Track-POD MCP by usefulapi asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

### Is the Track-POD MCP by usefulapi server still maintained?

Track-POD MCP by usefulapi is still listed as active in the MCP registry. We last reached this channel on 16 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://track-pod.usefulapi.io/mcp
- Repository: https://github.com/m190/usefulapi-mcp
- Website: https://usefulapi.io/track-pod/
- Changelog RSS feed: https://verifymcp.io/servers/io-usefulapi-track-pod/track-pod.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-usefulapi-track-pod/track-pod.json
- HTML version of this page: https://verifymcp.io/servers/io-usefulapi-track-pod/track-pod
