create_order
Initiate order creation by specifying reference ID, recipient details, and order items. Integrates with ShipBob API to manage e-commerce fulfillment efficiently.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Order items | |
| orderNote | No | Note for the order | |
| recipient | Yes | Shipping address information | |
| referenceId | Yes | Your reference ID for the order | |
| shippingMethod | No | Preferred shipping method |
Implementation Reference
- src/tools/order-tools.js:81-96 (handler)The handler function that executes the tool logic by calling the ShipBob API to create an order and returns formatted success or error 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 for input validation of the create_order tool parameters including referenceId, recipient details, items array, and optional fields.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/server.js:51-51 (registration)Registers the orderTools array containing the create_order tool definition to the MCP server using the registerTools utility.registerTools(orderTools);
- src/api-client.js:80-82 (helper)ShipBobClient helper method that performs the actual API POST request to create the order.async createOrder(orderData) { return this.request('POST', '/orders', orderData); }
- src/tools/order-tools.js:56-97 (registration)Tool object definition within orderTools array that includes name, description, schema, and handler for create_order.{ 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 }; } } },