list_orders
Retrieve and filter orders using pagination, sorting, and date-based criteria via the ShipStation API. Manage order lists by status, store, or creation/modification date for efficient order tracking and processing.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| createDateEnd | No | Filter by creation date (end) | |
| createDateStart | No | Filter by creation date (start) | |
| modifyDateEnd | No | Filter by modification date (end) | |
| modifyDateStart | No | Filter by modification date (start) | |
| orderStatus | No | Filter by order status | |
| page | No | Page number | |
| pageSize | No | Number of orders per page (max 500) | |
| sortBy | No | Sort orders by a specific field | |
| sortDir | No | Sort direction | |
| storeId | No | Filter by store ID |
Input Schema (JSON Schema)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"createDateEnd": {
"description": "Filter by creation date (end)",
"type": "string"
},
"createDateStart": {
"description": "Filter by creation date (start)",
"type": "string"
},
"modifyDateEnd": {
"description": "Filter by modification date (end)",
"type": "string"
},
"modifyDateStart": {
"description": "Filter by modification date (start)",
"type": "string"
},
"orderStatus": {
"description": "Filter by order status",
"type": "string"
},
"page": {
"description": "Page number",
"type": "number"
},
"pageSize": {
"description": "Number of orders per page (max 500)",
"type": "number"
},
"sortBy": {
"description": "Sort orders by a specific field",
"type": "string"
},
"sortDir": {
"description": "Sort direction",
"enum": [
"ASC",
"DESC"
],
"type": "string"
},
"storeId": {
"description": "Filter by store ID",
"type": "number"
}
},
"type": "object"
}
Implementation Reference
- src/tools/order-tools.js:20-32 (handler)The handler function that implements the core logic of the 'list_orders' tool by fetching orders via ShipStation API client and formatting the response.handler: async (params) => { try { const orders = await shipStationClient.getOrders(params); return { content: [{ type: "text", text: JSON.stringify(orders, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: error.message }], isError: true }; } }
- src/tools/order-tools.js:8-19 (schema)Zod-based input schema defining optional parameters for pagination, sorting, and filtering orders.schema: { page: z.number().optional().describe("Page number"), pageSize: z.number().optional().describe("Number of orders per page (max 500)"), sortBy: z.string().optional().describe("Sort orders by a specific field"), sortDir: z.enum(["ASC", "DESC"]).optional().describe("Sort direction"), orderStatus: z.string().optional().describe("Filter by order status"), storeId: z.number().optional().describe("Filter by store ID"), createDateStart: z.string().optional().describe("Filter by creation date (start)"), createDateEnd: z.string().optional().describe("Filter by creation date (end)"), modifyDateStart: z.string().optional().describe("Filter by modification date (start)"), modifyDateEnd: z.string().optional().describe("Filter by modification date (end)") },
- src/server.js:174-191 (registration)Registration of all tools, including 'list_orders' from orderTools array, to the MCP server via server.tool() calls in a forEach loop.[ ...orderTools, ...shipmentTools, ...carrierTools, ...warehouseTools, ...productTools, ...customerTools, ...storeTools, ...webhookTools, ...fulfillmentTools ].forEach(tool => { server.tool( tool.name, tool.schema, tool.handler, { description: tool.description } ); });
- src/api-client.js:48-50 (helper)ShipStationClient helper method that makes the actual API GET request to the /orders endpoint with query parameters.async getOrders(params) { return this.request('GET', '/orders', null, params); }