Ship24 Tracking
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Track parcels across 2,500+ carriers and 3PLs: live delivery status, event history, carrier lookup.
| Author | com.ship24 |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 97 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"Ship24 Tracking": {
"url": "https://api.ship24.com/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (12)
create_trackerCreates a new tracker for a tracking number. Use when the user explicitly wants ongoing monitoring or webhook updates; results arrive asynchronously — for immediate results use track or search_tracking. Idempotent: same parameters reuse the existing tracker; any field change creates a new one. Subscribes to webhook updates if configured. Returns the created tracker including its Ship24 trackerId.
Parameters:
trackingNumber(required) — string — Tracking number to monitor.settings— objectcourierCode— array — Courier codes for this tracker (max 3). Use get_couriers for valid codes. IMPORTANT: Check each courier's requiredFields array — any listed fields should be provided, otherwise the courier may not return any tracking data.courierName— string — Courier name (informational).orderNumber— string — Associated order number.trackingUrl— string — Courier tracking URL.shippingDate— string — Date the package was shipped (YYYY-MM-DD or ISO 8601).clientTrackerId— string — Your unique identifier for this tracker, for lookup via searchBy=clientTrackerId.originCountryCode— string — Origin country code (ISO alpha-2, e.g. US).shipmentReference— string — Internal reference for the shipment.destinationPostCode— string — Destination postal/ZIP code.destinationCountryCode— string — Destination country code (ISO alpha-2).
Hints: read-only not declared · destructive no · idempotent yes · open-world yes
list_trackersread-onlyReturns a paginated list of all trackers. Supports offset (page/limit) or cursor-based pagination. Filter by subscription status with isSubscribed.
Parameters:
page— integer — Page number (1-indexed).sort— Sort order by createdAt. 1 = ascending (oldest first, default), -1 = descending (newest first).limit— integer — Results per page (max 500).
Hints: read-only yes · destructive not declared · idempotent not declared · open-world no
bulk_create_trackersCreates up to 100 trackers in one request. Each tracker object accepts the same fields as create_tracker — see that tool for field details. Not fully idempotent: retrying a failed bulk request may partially create trackers. Returns counts of created, ignored (duplicate), and failed trackers plus per-item details.
Parameters:
trackers(required) — array — Array of tracker objects to create (minimum 1, maximum 100).
Hints: read-only not declared · destructive no · idempotent no · open-world yes
trackCreates a persistent tracker on the account AND returns full tracking results synchronously in one call (per-shipment plan). Idempotent: same payload reuses the existing tracker. Prefer search_tracking for one-off lookups when the per-call plan is available. If the returned shipment is still pending with no events, call get_tracking_results once with the returned trackerId before answering. Accepts the same fields as create_tracker — see that tool for field details.
Parameters:
trackingNumber(required) — stringsettings— objectcourierCode— array — Courier codes for this tracker (max 3). Use get_couriers for valid codes. IMPORTANT: Check each courier's requiredFields array — any listed fields should be provided, otherwise the courier may not return any tracking data.courierName— stringorderNumber— stringtrackingUrl— stringshippingDate— stringclientTrackerId— stringoriginCountryCode— stringshipmentReference— stringdestinationPostCode— stringdestinationCountryCode— string
Hints: read-only not declared · destructive no · idempotent yes · open-world yes
get_trackerread-onlyRetrieves a single tracker by trackerId (or clientTrackerId when searchBy is set). Returns tracker metadata only — use get_tracking_results for events and status.
Parameters:
trackerId(required) — string — Ship24 trackerId, or clientTrackerId when searchBy="clientTrackerId".searchBy— string — How to interpret trackerId: default is Ship24 trackerId, use "clientTrackerId" for your own reference.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world no
update_trackerPartially updates a tracker (PATCH). Only provided fields are changed. Common uses: toggling isSubscribed, correcting destination details, or setting a clientTrackerId.
Parameters:
trackerId(required) — string — The tracker to update (Ship24 trackerId or clientTrackerId).searchBy— string — How to interpret trackerId: default is Ship24 trackerId, use "clientTrackerId" for your own reference.settings— objectcourierCode— array — Courier codes for this tracker (max 3). Use get_couriers for valid codes. IMPORTANT: Check each courier's requiredFields array — any listed fields should be provided, otherwise the courier may not return any tracking data.isSubscribed— boolean — true to subscribe to webhooks, false to unsubscribe.shippingDate— string — Ship date (YYYY-MM-DD or ISO 8601). Immutable once tracking data exists.originCountryCode— string — Origin country code (ISO alpha-2). Immutable once tracking data exists.destinationPostCode— stringdestinationCountryCode— string — Destination country code (ISO alpha-2). Immutable once tracking data exists.
Hints: read-only not declared · destructive no · idempotent yes · open-world no
get_tracking_resultsread-onlyReturns full tracking results for an existing tracker: metadata, shipment status, all events in order, and delivery statistics. Primary tool for "where is my package?" when you have a trackerId. statusMilestone values: pending | info_received | in_transit | out_for_delivery | failed_attempt | available_for_pickup | delivered | exception.
Parameters:
trackerId(required) — string — Ship24 trackerId, or clientTrackerId when searchBy="clientTrackerId".searchBy— string — How to interpret trackerId: default is Ship24 trackerId, use "clientTrackerId" for your own reference.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world no
search_tracking_by_numberread-onlyReturns existing tracking results for a raw tracking number across trackers already on the account, without needing a trackerId. Free read: never creates a tracker and never triggers a new crawl. Responds 404 tracker_not_found if no tracker exists for that number — in that case use search_tracking (per-call) or track (per-shipment). Use this first when a tracker may already exist.
Parameters:
trackingNumber(required) — string — The raw shipment tracking number to search for (e.g. 1Z999AA10123456784).
Hints: read-only yes · destructive not declared · idempotent not declared · open-world no
get_couriersread-onlyReturns the list of all couriers supported by Ship24, including their unique courier codes, human-readable names, and any special tracking requirements. Use this tool to discover valid courierCode values before creating or updating trackers, or to help identify which courier handles a particular tracking number format. Note: this endpoint has a rate limit of 1 request/second; cache results when possible.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world no
search_trackingread-onlyDefault tool for one-off tracking lookups ('track X', 'where is my package'). Synchronous per-call plan endpoint: returns full results (status, events, statistics) immediately and creates NO tracker on the account. Billed per call. Requires an active per-call plan — if it fails with no_active_subscription, use the track tool instead.
Parameters:
trackingNumber(required) — string — Tracking number to look up. 5-50 alphanumeric characters, hyphens, underscores, dots, or slashes.courierCode— array — Courier codes for this tracker (max 3). Use get_couriers for valid codes. IMPORTANT: Check each courier's requiredFields array — any listed fields should be provided, otherwise the courier may not return any tracking data.shippingDate— string — Date the package was shipped (YYYY-MM-DD or ISO 8601).originCountryCode— string — Origin country code (ISO alpha-2).destinationPostCode— string — Destination postal/ZIP code.destinationCountryCode— string — Destination country code (ISO alpha-2).
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
resend_webhooksdestructiveReplays all webhook events for a tracker. Use when your endpoint missed or failed to process previous notifications. Terminates any in-flight webhook delivery for this tracker and invalidates its existing webhook payload records before regenerating and resending them — do not call repeatedly in quick succession. Rate-limited to 1 request/second per tracker.
Parameters:
trackerId(required) — string — Ship24 trackerId, or clientTrackerId when searchBy="clientTrackerId".searchBy— string — How to interpret trackerId: default is Ship24 trackerId, use "clientTrackerId" for your own reference.
Hints: read-only not declared · destructive yes · idempotent no · open-world yes
download_webhook_historyread-onlyRetrieves the full webhook push history for a tracker. Returns metadata (trackingNumber, trackerId, clientTrackerId, webhookUrl, lastSuccessfulPushAt, lastFailedPushAt) and a list of all sent or failed pushes with status, pushTimestamp, requestBody, responseBody, responseHeaders, and responseStatusCode. Pending (unsent) webhooks are excluded. Results are sorted newest first. Rate-limited to 1 request/second per tracker.
Parameters:
trackerId(required) — string — Ship24 trackerId, or clientTrackerId when searchBy="clientTrackerId".searchBy— string — How to interpret trackerId: default is Ship24 trackerId, use "clientTrackerId" for your own reference.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world no
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.