Track and search CXT courier orders, check drivers, propose and save order and route plans.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
One on-demand order with itemized charges, as an OPERATIONS APP (X Dispatch) user sees it (sign in with user type XDISPATCH): addresses, times, driver, status events, proof of delivery. Costs 1 API credit with the vendor. GET /v2/Dispatch/Orders/{onDemandOrderId}.
CXT on-demand order id.
One on-demand order with itemized charges, as an OPERATIONS APP (X Dispatch) user sees it (sign in with user type XDISPATCH): addresses, times, driver, status events, proof of delivery. Costs 1 API credit with the vendor. GET /v2/Dispatch/Orders/{onDemandOrderId}.
| Argument | Type | Description |
|---|---|---|
| order_id* | number | CXT on-demand order id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"order_id"
],
"properties": {
"order_id": {
"type": "number",
"maximum": 9007199254740991,
"description": "CXT on-demand order id.",
"exclusiveMinimum": 0
}
}
}One on-demand order with its status, confirmation, pickup, delivery and proof-of-delivery details, as an INTERNET user sees it (sign in with user type INET). Optionally with the itemized charges. Operations App users should use cxt_get_dispatch_order. Costs 1 API credit with the vendor. GET /v2/Orders/{orderId}/{includeItemizedCharges}.
| Argument | Type | Description |
|---|---|---|
| order_id* | number | CXT order id. |
| include_itemized_charges | boolean | Include the itemized charges (default false). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"order_id"
],
"properties": {
"order_id": {
"type": "number",
"maximum": 9007199254740991,
"description": "CXT order id.",
"exclusiveMinimum": 0
},
"include_itemized_charges": {
"type": "boolean",
"description": "Include the itemized charges (default false)."
}
}
}The itinerary planning limits of this X Dispatch system: maxAllowedStops (shipments x 2), maxAllowedLocations and maxAllowedPlaceholders. Needs an Operations App user with the ITINERARY_PLANNING_ACCESS permission. GET /v3/ItineraryPlanning/Settings.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}The most recent orders of the signed-in INTERNET user (user type INET; the orders of their account). Costs 1 API credit with the vendor. POST /v2/Shipments/Summaries with numRecentOrders.
| Argument | Type | Description |
|---|---|---|
| count | integer | How many recent orders, 1-1000 (default 25). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"count": {
"type": "integer",
"maximum": 1000,
"description": "How many recent orders, 1-1000 (default 25).",
"exclusiveMinimum": 0
}
}
}Re-optimize a single driver's plan after manual changes (proposal only: nothing is dispatched until cxt_save_order_plan). Needs ITINERARY_PLANNING_ACCESS. POST /v3/ItineraryPlanning/Orders/Optimize.
| Argument | Type | Description |
|---|---|---|
| goal | string | Optimization goal (default QUICKEST_ROUTE). |
| end_time* | string | Local date-time without timezone, e.g. 2026-10-01T08:00:00. |
| driver_id* | integer | Driver id (or the placeholder's id when is_placeholder). |
| start_time* | string | Local date-time without timezone, e.g. 2026-10-01T08:00:00. |
| is_placeholder | boolean | The driver is a placeholder. |
| plan_order_ids* | array | Orders currently in this driver's plan. |
| enhanced_routing | string | Enhanced routing (default OFF). |
| all_input_order_ids* | array |
Re-optimize a single route after manual changes (proposal only: nothing changes until cxt_save_route_plan). Needs ITINERARY_PLANNING_ACCESS. POST /v3/ItineraryPlanning/Routes/{postDate}/Optimize.
| Argument | Type | Description |
|---|---|---|
| goal | string | Optimization goal (default QUICKEST_ROUTE). |
| end_time* | string | Local date-time without timezone, e.g. 2026-10-01T08:00:00. |
| route_id* | string | Route to optimize. |
| post_date* | string | Route date, yyyy-mm-dd. |
| start_time* | string | Local date-time without timezone, e.g. 2026-10-01T08:00:00. |
| is_batch_call | boolean | Batch optimization (default false). |
| plan_stop_ids | array | Stops currently assigned to this route. |
| is_placeholder | boolean | |
Generate a proposed itinerary that assigns on-demand orders to drivers (pickup and delivery stops in sequence, with times, distance and unassigned stops). This only PROPOSES a plan: nothing is dispatched until cxt_save_order_plan is called. Needs ITINERARY_PLANNING_ACCESS. Check the limits with cxt_get_planning_limits first. POST /v3/ItineraryPlanning/Orders.
| Argument | Type | Description |
|---|---|---|
| goal | string | Optimization goal (default QUICKEST_ROUTE). |
| end_time* | string | Planning window end, local time, e.g. 2026-10-01T18:00:00. |
| order_ids* | array | Order ids to plan. |
| driver_ids* | array | Driver ids to plan onto. |
| start_time* | string | Planning window start, local time, e.g. 2026-10-01T08:00:00. |
| enhanced_routing | string | Enhanced routing (default OFF). |
| num_placeholders | integer | Virtual placeholder drivers (0-1000). |
| max_orders_per_driver |
Generate a proposed re-sequencing of the stops of existing routes for one route date (stops move between the output routes, with times, distance and unassigned stops). Proposal only: nothing changes until cxt_save_route_plan is called. Needs ITINERARY_PLANNING_ACCESS. POST /v3/ItineraryPlanning/Routes/{postDate}.
| Argument | Type | Description |
|---|---|---|
| goal | string | Optimization goal (default QUICKEST_ROUTE). |
| end_time* | string | Local date-time without timezone, e.g. 2026-10-01T08:00:00. |
| post_date* | string | Route date, yyyy-mm-dd. |
| start_time* | string | Local date-time without timezone, e.g. 2026-10-01T08:00:00. |
| input_route_ids* | array | Route ids to take stops from. |
| enhanced_routing | string | Enhanced routing (default OFF). |
| num_placeholders | integer | |
| output_route_ids* |
COMMIT an order plan: assigns the orders to the drivers and DISPATCHES them (drivers receive the work in the driver app; customers may be notified by the system's own status rules). Use only after the user has seen and approved the plan from cxt_plan_orders / cxt_optimize_order_plan. Pass each driver's stops from the plan reply: id, type (PICKUP or DELIVERY), sequence and from (the scheduled time). Response is empty on success (204). Needs ITINERARY_PLANNING_ACCESS. POST /v3/ItineraryPlanning/Orders/Save.
| Argument | Type | Description |
|---|---|---|
| plans* | array | |
| confirm* | boolean | Must be true: the user approved this plan and wants it dispatched to the drivers now. |
| driver_pay_locked_status | string | What to do with already locked driver pay: KEEP_LOCKED_AND_DISPATCH or UNLOCK_AND_DISPATCH. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"plans",
"confirm"
],
"properties": {
"plans": {
"type": "array",
"items": {
"type": "object",
"required": [
"driverId",
"stops"
],
"properties": {
"stops": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"type",
"sequence",
"from"
],
"properties": {
"id": {
"type": "number",
"maximum": 9007199254740991,
"description": "Order id.",
"exclusiveMinimum": 0
},
"from": {
"type": "object",
"required": [
"timeStamp"
],
"properties": {
"timeStamp": {
"anyOf": [
{
"type": "string",
"maxLength": 64,
"minLength": 1
},
{
"type": "number"
}
]
}
},
"description": "Scheduled arrival: copy `from` from the plan reply, or {timeStamp: '2026-10-01T08:30:00'}.",
"additionalProperties": {}
},
"type": {
"enum": [
"PICKUP",
"DELIVERY"
],
"type": "string"
},
"isNew": {
"type": "boolean",
"description": "Whether this is a new assignment."
},
"sequence": {
"type": "integer",
"maximum": 100000,
"exclusiveMinimum": 0
}
}
},
"maxItems": 6000,
"minItems": 1
},
"driverId": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
}
},
"maxItems": 500,
"minItems": 1
},
"confirm": {
"type": "boolean",
"const": true,
"description": "Must be true: the user approved this plan and wants it dispatched to the drivers now."
},
"driver_pay_locked_status": {
"enum": [
"KEEP_LOCKED_AND_DISPATCH",
"UNLOCK_AND_DISPATCH"
],
"type": "string",
"description": "What to do with already locked driver pay: KEEP_LOCKED_AND_DISPATCH or UNLOCK_AND_DISPATCH."
}
}
}COMMIT a route plan for one route date: moves and re-sequences route stops as in the plan and DISPATCHES the changed routes to drivers. Use only after the user has seen and approved the plan from cxt_plan_routes / cxt_optimize_route_plan. Pass each route's stops from the plan reply: id, sequence and from (the scheduled time). Response is empty on success (204). Needs ITINERARY_PLANNING_ACCESS. POST /v3/ItineraryPlanning/Routes/{postDate}/Save.
| Argument | Type | Description |
|---|---|---|
| plans* | array | |
| confirm* | boolean | Must be true: the user approved this plan and wants it dispatched to the drivers now. |
| post_date* | string | Route date, yyyy-mm-dd. |
| driver_pay_locked_status | string | What to do with already locked driver pay: KEEP_LOCKED_AND_DISPATCH or UNLOCK_AND_DISPATCH. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"post_date",
"plans",
"confirm"
],
"properties": {
"plans": {
"type": "array",
"items": {
"type": "object",
"required": [
"routeId",
"stops"
],
"properties": {
"stops": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"sequence",
"from"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Route stop id.",
"exclusiveMinimum": 0
},
"from": {
"type": "object",
"required": [
"timeStamp"
],
"properties": {
"timeStamp": {
"anyOf": [
{
"type": "string",
"maxLength": 64,
"minLength": 1
},
{
"type": "number"
}
]
}
},
"description": "Scheduled arrival: copy `from` from the plan reply, or {timeStamp: '2026-10-01T08:30:00'}.",
"additionalProperties": {}
},
"isNew": {
"type": "boolean"
},
"sequence": {
"type": "integer",
"maximum": 100000,
"exclusiveMinimum": 0
}
}
},
"maxItems": 6000,
"minItems": 1
},
"routeId": {
"type": "string",
"maxLength": 100,
"minLength": 1
}
}
},
"maxItems": 500,
"minItems": 1
},
"confirm": {
"type": "boolean",
"const": true,
"description": "Must be true: the user approved this plan and wants it dispatched to the drivers now."
},
"post_date": {
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
"description": "Route date, yyyy-mm-dd."
},
"driver_pay_locked_status": {
"enum": [
"KEEP_LOCKED_AND_DISPATCH",
"UNLOCK_AND_DISPATCH"
],
"type": "string",
"description": "What to do with already locked driver pay: KEEP_LOCKED_AND_DISPATCH or UNLOCK_AND_DISPATCH."
}
}
}Search orders and route stops by place, address, city, state, postal code, order template, or only by date range. tracking_type says which field search_criteria is matched against: Location (origin/destination or stop name), Address, City, State, Postal (zip or zip+4), Template (order template name), Tracking (references/barcodes) or DateOnly (no criteria: everything between begin_date and end_date). Returns shipment summaries, up to 1000 per page. An INET login sees the most detail; with an Operations App login this endpoint is called without credentials (CXT lists only internet users and anonymous callers for it), so the view is limited. Costs 1 API credit with the vendor. POST /v2/Shipments/Summaries.
| Argument | Type | Description |
|---|---|---|
| end_date | string | A date (2026-10-01) or an ISO 8601 date-time with a timezone, e.g. 2026-10-01T08:00:00Z. |
| page_num | integer | CXT's pageNum, documented as 'the offset for the records to return' (default 0). When has_more is true, ask for the next records and check the new page does not repeat the previous one (if it does, pageNum counts records: use a multiple of page_size). |
| page_size | integer | Results per page, 1-1000 (default 50). |
| begin_date | string | A date (2026-10-01) or an ISO 8601 date-time with a timezone, e.g. 2026-10-01T08:00:00Z. |
| tracking_type* | string | Which field search_criteria matches. |
Track orders and route stops by tracking number: matches a parcel reference, a parcel item barcode, or Reference1/Reference2 of an order or route stop. Returns shipment summaries with status events and proof of delivery as far as the caller's permissions allow: an INET login sees the most detail; with an Operations App login this endpoint is called without credentials (CXT lists only internet users and anonymous callers for it), which returns the limited public tracking view. Costs 1 API credit with the vendor. POST /v2/Shipments/Summaries.
| Argument | Type | Description |
|---|---|---|
| end_date | string | A date (2026-10-01) or an ISO 8601 date-time with a timezone, e.g. 2026-10-01T08:00:00Z. |
| page_num | integer | CXT's pageNum, documented as 'the offset for the records to return' (default 0). When has_more is true, ask for the next records and check the new page does not repeat the previous one (if it does, pageNum counts records: use a multiple of page_size). |
| page_size | integer | Results per page, 1-1000 (default 50). |
| begin_date | string | A date (2026-10-01) or an ISO 8601 date-time with a timezone, e.g. 2026-10-01T08:00:00Z. |
| tracking_numbers* | array | Tracking numbers, references or barcodes (1-50). |
| include_partial_match | boolean |
Check one driver against specific orders: vehicle violations, HR violations and capability violations (for example Hazmat or Lift Gate that the driver lacks). Changes nothing. Needs ITINERARY_PLANNING_ACCESS. POST /v3/ItineraryPlanning/Orders/Drivers/{driverId}/Validate.
| Argument | Type | Description |
|---|---|---|
| driver_id* | integer | Driver id. |
| order_ids* | array | Order ids to check the driver against. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"driver_id",
"order_ids"
],
"properties": {
"driver_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Driver id.",
"exclusiveMinimum": 0
},
"order_ids": {
"type": "array",
"items": {
"type": "number",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"maxItems": 3000,
"minItems": 1,
"description": "Order ids to check the driver against."
}
}
}Check whether drivers are available to be planned: for each driver id, vehicle violations (for example an expired inspection) and HR violations (for example not scheduled), each with isBypassable. Changes nothing. Needs ITINERARY_PLANNING_ACCESS. POST /v3/ItineraryPlanning/Orders/Drivers/Validate.
| Argument | Type | Description |
|---|---|---|
| driver_ids* | array | Driver ids to check. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"driver_ids"
],
"properties": {
"driver_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"maxItems": 500,
"minItems": 1,
"description": "Driver ids to check."
}
}
}| All orders in the planning run. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"driver_id",
"plan_order_ids",
"all_input_order_ids",
"start_time",
"end_time"
],
"properties": {
"goal": {
"enum": [
"QUICKEST_ROUTE",
"SHORTEST_DISTANCE"
],
"type": "string",
"description": "Optimization goal (default QUICKEST_ROUTE)."
},
"end_time": {
"type": "string",
"description": "Local date-time without timezone, e.g. 2026-10-01T08:00:00."
},
"driver_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Driver id (or the placeholder's id when is_placeholder).",
"exclusiveMinimum": 0
},
"start_time": {
"type": "string",
"description": "Local date-time without timezone, e.g. 2026-10-01T08:00:00."
},
"is_placeholder": {
"type": "boolean",
"description": "The driver is a placeholder."
},
"plan_order_ids": {
"type": "array",
"items": {
"type": "number",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"maxItems": 3000,
"description": "Orders currently in this driver's plan."
},
"enhanced_routing": {
"enum": [
"OFF",
"ON"
],
"type": "string",
"description": "Enhanced routing (default OFF)."
},
"all_input_order_ids": {
"type": "array",
"items": {
"type": "number",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"maxItems": 3000,
"description": "All orders in the planning run."
}
}
}| input_route_ids |
| array |
| Source routes for stops. |
| enhanced_routing | string | Enhanced routing (default OFF). |
| excluded_stop_ids | array |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"post_date",
"route_id",
"start_time",
"end_time"
],
"properties": {
"goal": {
"enum": [
"QUICKEST_ROUTE",
"SHORTEST_DISTANCE"
],
"type": "string",
"description": "Optimization goal (default QUICKEST_ROUTE)."
},
"end_time": {
"type": "string",
"description": "Local date-time without timezone, e.g. 2026-10-01T08:00:00."
},
"route_id": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Route to optimize."
},
"post_date": {
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
"description": "Route date, yyyy-mm-dd."
},
"start_time": {
"type": "string",
"description": "Local date-time without timezone, e.g. 2026-10-01T08:00:00."
},
"is_batch_call": {
"type": "boolean",
"description": "Batch optimization (default false)."
},
"plan_stop_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"maxItems": 5000,
"description": "Stops currently assigned to this route."
},
"is_placeholder": {
"type": "boolean"
},
"input_route_ids": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"maxItems": 500,
"description": "Source routes for stops."
},
"enhanced_routing": {
"enum": [
"OFF",
"ON"
],
"type": "string",
"description": "Enhanced routing (default OFF)."
},
"excluded_stop_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"maxItems": 5000
}
}
}| integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"order_ids",
"driver_ids",
"start_time",
"end_time"
],
"properties": {
"goal": {
"enum": [
"QUICKEST_ROUTE",
"SHORTEST_DISTANCE"
],
"type": "string",
"description": "Optimization goal (default QUICKEST_ROUTE)."
},
"end_time": {
"type": "string",
"description": "Planning window end, local time, e.g. 2026-10-01T18:00:00."
},
"order_ids": {
"type": "array",
"items": {
"type": "number",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"maxItems": 1500,
"minItems": 1,
"description": "Order ids to plan."
},
"driver_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"maxItems": 500,
"minItems": 1,
"description": "Driver ids to plan onto."
},
"start_time": {
"type": "string",
"description": "Planning window start, local time, e.g. 2026-10-01T08:00:00."
},
"enhanced_routing": {
"enum": [
"OFF",
"ON"
],
"type": "string",
"description": "Enhanced routing (default OFF)."
},
"num_placeholders": {
"type": "integer",
"maximum": 1000,
"minimum": 0,
"description": "Virtual placeholder drivers (0-1000)."
},
"max_orders_per_driver": {
"type": "integer",
"maximum": 10000,
"exclusiveMinimum": 0
}
}
}| array |
| Route ids to assign stops to. |
| excluded_stop_ids | array | Stop ids to leave out of planning. |
| max_stops_per_route | integer |
| grace_period_per_stop | integer | Grace period per stop, minutes. |
| service_time_per_stop | integer | Service time per stop, minutes. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"post_date",
"input_route_ids",
"output_route_ids",
"start_time",
"end_time"
],
"properties": {
"goal": {
"enum": [
"QUICKEST_ROUTE",
"SHORTEST_DISTANCE"
],
"type": "string",
"description": "Optimization goal (default QUICKEST_ROUTE)."
},
"end_time": {
"type": "string",
"description": "Local date-time without timezone, e.g. 2026-10-01T08:00:00."
},
"post_date": {
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
"description": "Route date, yyyy-mm-dd."
},
"start_time": {
"type": "string",
"description": "Local date-time without timezone, e.g. 2026-10-01T08:00:00."
},
"input_route_ids": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"maxItems": 500,
"minItems": 1,
"description": "Route ids to take stops from."
},
"enhanced_routing": {
"enum": [
"OFF",
"ON"
],
"type": "string",
"description": "Enhanced routing (default OFF)."
},
"num_placeholders": {
"type": "integer",
"maximum": 1000,
"minimum": 0
},
"output_route_ids": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"maxItems": 500,
"minItems": 1,
"description": "Route ids to assign stops to."
},
"excluded_stop_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"maxItems": 5000,
"description": "Stop ids to leave out of planning."
},
"max_stops_per_route": {
"type": "integer",
"maximum": 10000,
"exclusiveMinimum": 0
},
"grace_period_per_stop": {
"type": "integer",
"maximum": 1440,
"minimum": 0,
"description": "Grace period per stop, minutes."
},
"service_time_per_stop": {
"type": "integer",
"maximum": 1440,
"minimum": 0,
"description": "Service time per stop, minutes."
}
}
}| search_criteria | array | Values to match (omit for DateOnly). |
| include_partial_match | boolean | Also return partial matches (default false). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"tracking_type"
],
"properties": {
"end_date": {
"type": "string",
"description": "A date (2026-10-01) or an ISO 8601 date-time with a timezone, e.g. 2026-10-01T08:00:00Z."
},
"page_num": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "CXT's pageNum, documented as 'the offset for the records to return' (default 0). When has_more is true, ask for the next records and check the new page does not repeat the previous one (if it does, pageNum counts records: use a multiple of page_size)."
},
"page_size": {
"type": "integer",
"maximum": 1000,
"description": "Results per page, 1-1000 (default 50).",
"exclusiveMinimum": 0
},
"begin_date": {
"type": "string",
"description": "A date (2026-10-01) or an ISO 8601 date-time with a timezone, e.g. 2026-10-01T08:00:00Z."
},
"tracking_type": {
"enum": [
"Location",
"Address",
"City",
"State",
"Postal",
"Template",
"Tracking",
"DateOnly"
],
"type": "string",
"description": "Which field search_criteria matches."
},
"search_criteria": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"description": "Values to match (omit for DateOnly)."
},
"include_partial_match": {
"type": "boolean",
"description": "Also return partial matches (default false)."
}
}
}| Also return partial matches (default false). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"tracking_numbers"
],
"properties": {
"end_date": {
"type": "string",
"description": "A date (2026-10-01) or an ISO 8601 date-time with a timezone, e.g. 2026-10-01T08:00:00Z."
},
"page_num": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "CXT's pageNum, documented as 'the offset for the records to return' (default 0). When has_more is true, ask for the next records and check the new page does not repeat the previous one (if it does, pageNum counts records: use a multiple of page_size)."
},
"page_size": {
"type": "integer",
"maximum": 1000,
"description": "Results per page, 1-1000 (default 50).",
"exclusiveMinimum": 0
},
"begin_date": {
"type": "string",
"description": "A date (2026-10-01) or an ISO 8601 date-time with a timezone, e.g. 2026-10-01T08:00:00Z."
},
"tracking_numbers": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Tracking numbers, references or barcodes (1-50)."
},
"include_partial_match": {
"type": "boolean",
"description": "Also return partial matches (default false)."
}
}
}