list_products
Retrieve product listings from ShipStation with pagination, filtering by SKU, name, or category, and sorting options to manage inventory.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number | |
| pageSize | No | Number of products per page (max 500) | |
| sortBy | No | Sort products by a specific field | |
| sortDir | No | Sort direction | |
| sku | No | Filter by SKU | |
| name | No | Filter by product name | |
| productCategoryId | No | Filter by product category ID | |
| showInactive | No | Include inactive products |
Implementation Reference
- src/tools/product-tools.js:18-30 (handler)The handler function that executes the tool logic: calls shipStationClient.getProducts(params), formats the response as MCP content with JSON stringified products, or returns error.handler: async (params) => { try { const products = await shipStationClient.getProducts(params); return { content: [{ type: "text", text: JSON.stringify(products, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: error.message }], isError: true }; } }
- src/tools/product-tools.js:8-17 (schema)Input schema validation using Zod for optional pagination, sorting, and filtering parameters.schema: { page: z.number().optional().describe("Page number"), pageSize: z.number().optional().describe("Number of products per page (max 500)"), sortBy: z.string().optional().describe("Sort products by a specific field"), sortDir: z.enum(["ASC", "DESC"]).optional().describe("Sort direction"), sku: z.string().optional().describe("Filter by SKU"), name: z.string().optional().describe("Filter by product name"), productCategoryId: z.number().optional().describe("Filter by product category ID"), showInactive: z.boolean().optional().describe("Include inactive products") },
- src/server.js:184-191 (registration)Generic registration loop for all tools. The 'productTools' array (containing 'list_products') is spread into this list at line 179.].forEach(tool => { server.tool( tool.name, tool.schema, tool.handler, { description: tool.description } ); });
- src/api-client.js:136-138 (helper)Supporting method in ShipStationClient that performs the actual GET /products API call with query parameters.async getProducts(params) { return this.request('GET', '/products', null, params); }