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
| 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 |
Input Schema (JSON Schema)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"items": {
"description": "Order items",
"items": {
"additionalProperties": false,
"properties": {
"productId": {
"description": "ShipBob product ID",
"type": "string"
},
"quantity": {
"description": "Quantity of the product",
"type": "number"
}
},
"required": [
"productId",
"quantity"
],
"type": "object"
},
"type": "array"
},
"orderNote": {
"description": "Note for the order",
"type": "string"
},
"recipient": {
"additionalProperties": false,
"description": "Shipping address information",
"properties": {
"address1": {
"description": "Address line 1",
"type": "string"
},
"address2": {
"description": "Address line 2",
"type": "string"
},
"city": {
"description": "City",
"type": "string"
},
"country": {
"description": "Country code (e.g., US)",
"type": "string"
},
"email": {
"description": "Email address",
"type": "string"
},
"name": {
"description": "Recipient's full name",
"type": "string"
},
"phone": {
"description": "Phone number",
"type": "string"
},
"state": {
"description": "State/Province",
"type": "string"
},
"zipCode": {
"description": "Zip/Postal code",
"type": "string"
}
},
"required": [
"name",
"address1",
"city",
"state",
"zipCode",
"country"
],
"type": "object"
},
"referenceId": {
"description": "Your reference ID for the order",
"type": "string"
},
"shippingMethod": {
"description": "Preferred shipping method",
"type": "string"
}
},
"required": [
"referenceId",
"recipient",
"items"
],
"type": "object"
}
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 }; } } },