create_order
Create new orders in ShipBob's fulfillment system by providing recipient details, items, and shipping preferences to initiate order processing.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| referenceId | Yes | Your reference ID for the order | |
| recipient | Yes | Shipping address information | |
| items | Yes | Order items | |
| shippingMethod | No | Preferred shipping method | |
| orderNote | No | Note for the order |
Implementation Reference
- src/tools/order-tools.js:81-96 (handler)The handler function that implements the core logic of the 'create_order' tool by calling the ShipBob API client to create the order and formatting the response.handler: async (orderData) => { try { const newOrder = await shipbobClient.createOrder(orderData); return { content: [{ type: "text", text: `Order created successfully: ${JSON.stringify(newOrder, null, 2)}` }] }; } catch (error) { return { content: [{ type: "text", text: `Error creating order: ${error.message}` }], isError: true }; } }
- src/tools/order-tools.js:59-80 (schema)Zod schema defining the input parameters for the create_order tool, including referenceId, recipient details, items, and optional shipping method/note.schema: { referenceId: z.string().describe("Your reference ID for the order"), recipient: z.object({ name: z.string().describe("Recipient's full name"), address1: z.string().describe("Address line 1"), address2: z.string().optional().describe("Address line 2"), city: z.string().describe("City"), state: z.string().describe("State/Province"), zipCode: z.string().describe("Zip/Postal code"), country: z.string().describe("Country code (e.g., US)"), phone: z.string().optional().describe("Phone number"), email: z.string().optional().describe("Email address") }).describe("Shipping address information"), items: z.array( z.object({ productId: z.string().describe("ShipBob product ID"), quantity: z.number().describe("Quantity of the product") }) ).describe("Order items"), shippingMethod: z.string().optional().describe("Preferred shipping method"), orderNote: z.string().optional().describe("Note for the order") },
- src/tools/order-tools.js:56-97 (registration)The full tool object definition for 'create_order' within the exported orderTools array.{ name: "create_order", description: "Create a new order in ShipBob", schema: { referenceId: z.string().describe("Your reference ID for the order"), recipient: z.object({ name: z.string().describe("Recipient's full name"), address1: z.string().describe("Address line 1"), address2: z.string().optional().describe("Address line 2"), city: z.string().describe("City"), state: z.string().describe("State/Province"), zipCode: z.string().describe("Zip/Postal code"), country: z.string().describe("Country code (e.g., US)"), phone: z.string().optional().describe("Phone number"), email: z.string().optional().describe("Email address") }).describe("Shipping address information"), items: z.array( z.object({ productId: z.string().describe("ShipBob product ID"), quantity: z.number().describe("Quantity of the product") }) ).describe("Order items"), shippingMethod: z.string().optional().describe("Preferred shipping method"), orderNote: z.string().optional().describe("Note for the order") }, handler: async (orderData) => { try { const newOrder = await shipbobClient.createOrder(orderData); return { content: [{ type: "text", text: `Order created successfully: ${JSON.stringify(newOrder, null, 2)}` }] }; } catch (error) { return { content: [{ type: "text", text: `Error creating order: ${error.message}` }], isError: true }; } } },
- src/server.js:51-51 (registration)Registers the orderTools array (containing create_order) with the MCP server using the registerTools utility.registerTools(orderTools);
- src/api-client.js:80-82 (helper)The ShipBobClient method called by the handler to perform the actual HTTP POST request to create an order.async createOrder(orderData) { return this.request('POST', '/orders', orderData); }