Skip to main content
Glama

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

NameRequiredDescriptionDefault
itemsYesOrder items
orderNoteNoNote for the order
recipientYesShipping address information
referenceIdYesYour reference ID for the order
shippingMethodNoPreferred 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

  • 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 }; } }
  • 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);
  • ShipBobClient helper method that performs the actual API POST request to create the order.
    async createOrder(orderData) { return this.request('POST', '/orders', orderData); }
  • 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 }; } } },

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mattcoatsworth/shipbob-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server