Skip to main content
Glama
inventory-handlers.js3.48 kB
// @ts-check /** * Inventory-level operation handlers for Inflow Inventory MCP Server * Handles stock adjustments and inventory management */ /** @typedef {import('../inflow-client').InflowClient} InflowClient */ export const inventoryHandlers = { /** * List stock adjustments * @param {InflowClient} client * @param {Object} args * @param {string} [args.adjustmentNumber] - Filter by adjustment number * @param {string} [args.include] - Related entities to include * @param {number} [args.limit] - Max results (default: 50) * @returns {Promise<Object>} */ async listStockAdjustments(client, args) { const options = { adjustmentNumber: args.adjustmentNumber, include: args.include, limit: args.limit || 50 }; return await client.listStockAdjustments(options); }, /** * Get a specific stock adjustment by ID * @param {InflowClient} client * @param {Object} args * @param {string} args.stockAdjustmentId - The stock adjustment ID * @param {string} [args.include] - Related entities to include * @returns {Promise<Object>} */ async getStockAdjustment(client, args) { if (!args.stockAdjustmentId) { return { success: false, error: 'stockAdjustmentId is required' }; } return await client.getStockAdjustment(args.stockAdjustmentId, args.include); }, /** * Create a stock adjustment to modify inventory quantities * @param {InflowClient} client * @param {Object} args * @param {string} args.stockAdjustmentId - UUID for the new adjustment (generate with crypto.randomUUID()) * @param {string} args.locationId - Location ID where adjustment occurs * @param {Array<Object>} args.lines - Array of adjustment lines * @param {string} args.lines[].productId - Product ID being adjusted * @param {number} args.lines[].quantity - Quantity to adjust (can be negative) * @param {string} [args.adjustmentReasonId] - Reason for adjustment * @param {string} [args.notes] - Notes about the adjustment * @param {string} [args.adjustmentDate] - Date of adjustment (ISO format) * @returns {Promise<Object>} */ async createStockAdjustment(client, args) { if (!args.stockAdjustmentId) { return { success: false, error: 'stockAdjustmentId is required (generate a UUID)' }; } if (!args.locationId) { return { success: false, error: 'locationId is required' }; } if (!args.lines || !Array.isArray(args.lines) || args.lines.length === 0) { return { success: false, error: 'lines array is required with at least one adjustment line' }; } // Validate each line for (let i = 0; i < args.lines.length; i++) { const line = args.lines[i]; if (!line.productId) { return { success: false, error: `Line ${i + 1}: productId is required` }; } if (line.quantity === undefined || line.quantity === null) { return { success: false, error: `Line ${i + 1}: quantity is required` }; } } const stockAdjustment = { stockAdjustmentId: args.stockAdjustmentId, locationId: args.locationId, lines: args.lines, adjustmentReasonId: args.adjustmentReasonId, notes: args.notes, adjustmentDate: args.adjustmentDate }; return await client.upsertStockAdjustment(stockAdjustment); } };

Implementation Reference

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/intelligent-staffing-systems/mcp-inflow-ingredients'

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