hold_order_until
Delays order processing in ShipStation until a specified date to manage fulfillment timing and prevent premature shipment.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| orderId | Yes | Order ID to hold | |
| holdUntilDate | Yes | Date to hold until (YYYY-MM-DD) |
Implementation Reference
- src/tools/order-tools.js:192-204 (handler)MCP tool handler that extracts orderId and holdUntilDate from params, calls shipStationClient.holdOrderUntil API method, and returns JSON response or error.handler: async ({ orderId, holdUntilDate }) => { try { const result = await shipStationClient.holdOrderUntil({ orderId, holdUntilDate }); return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: error.message }], isError: true }; } }
- src/tools/order-tools.js:188-190 (schema)Input schema using Zod for validating orderId (number) and holdUntilDate (string YYYY-MM-DD).schema: { orderId: z.number().describe("Order ID to hold"), holdUntilDate: z.string().describe("Date to hold until (YYYY-MM-DD)")
- src/tools/order-tools.js:185-205 (registration)Complete tool definition object in orderTools array, which is imported and registered via server.tool() in server.js.{ name: "hold_order_until", description: "Hold an order until a specified date", schema: { orderId: z.number().describe("Order ID to hold"), holdUntilDate: z.string().describe("Date to hold until (YYYY-MM-DD)") }, handler: async ({ orderId, holdUntilDate }) => { try { const result = await shipStationClient.holdOrderUntil({ orderId, holdUntilDate }); return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: error.message }], isError: true }; } } }
- src/api-client.js:80-82 (helper)ShipStationClient helper method that makes the actual POST request to ShipStation API endpoint /orders/holduntil.async holdOrderUntil(data) { return this.request('POST', '/orders/holduntil', data); }
- src/server.js:184-191 (registration)MCP server.tool() registration loop that spreads orderTools (including hold_order_until) and registers each tool.].forEach(tool => { server.tool( tool.name, tool.schema, tool.handler, { description: tool.description } ); });