Inflow Mcp Server — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Inflow Mcp Server (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A Model Context Protocol (MCP) server that provides comprehensive tools for interacting with the inFlow Inventory API. This enables AI assistants like Claude to manage your inventory, orders, customers, and more.
Current package version: 1.2.0
git clone https://github.com/bigl34/inflow-mcp-server.git
cd inflow-mcp-server
# Install dependencies
npm install
# Build the TypeScript
npm run buildSet the following environment variables:
# Required
export INFLOW_COMPANY_ID="your-company-id"
export INFLOW_API_KEY="your-api-key"
# Optional
export INFLOW_BASE_URL="https://cloudapi.inflowinventory.com" # Default
export INFLOW_API_VERSION="2025-06-24" # Default API version
export INFLOW_RATE_LIMIT="60" # Requests per minute (default: 60)
export INFLOW_REQUEST_TIMEOUT="30000" # Request timeout in ms (default: 30000)
export INFLOW_MAX_RETRIES="3" # Max retries on 5xx/429 errors (default: 3)
export INFLOW_RETRY_DELAY="1000" # Initial retry delay in ms (default: 1000)
export INFLOW_DEBUG="true" # Enable debug logging (default: false)Add to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"inflow-inventory": {
"command": "node",
"args": ["/path/to/inflow-mcp-server/dist/index.js"],
"env": {
"INFLOW_COMPANY_ID": "your-company-id",
"INFLOW_API_KEY": "your-api-key"
}
}
}
}| Tool | Description |
|---|---|
list_products | Search and filter products |
get_product | Get product details by ID (use include=itemBoms for BOM) |
upsert_product | Create or update a product |
get_inventory_summary | Get stock levels across locations |
get_inventory_summaries_batch | Batch get stock levels (max 100) |
get_bill_of_materials | Get BOM components for a manufacturable product |
| Tool | Description |
|---|---|
list_sales_orders | Search and filter sales orders |
get_sales_order | Get order details by ID |
upsert_sales_order | Create an order or partially update an existing order. Updates preserve unmentioned header fields and lines, merge item patches by line ID or unambiguous product ID, and remove lines listed in deleteLineIds. |
| Tool | Description |
|---|---|
list_purchase_orders | Search and filter purchase orders |
get_purchase_order | Get order details by ID |
upsert_purchase_order | Create or update a purchase order |
receive_purchase_order | Receive all remaining items or selected quantities onto a purchase order |
unreceive_purchase_order | Reverse received stock by receive-line ID, product quantity, or full unreceive |
| Tool | Description |
|---|---|
list_customers | Search and filter customers |
get_customer | Get customer details by ID |
upsert_customer | Create or update a customer |
| Tool | Description |
|---|---|
list_vendors | Search and filter vendors |
get_vendor | Get vendor details by ID |
upsert_vendor | Create or update a vendor |
| Tool | Description |
|---|---|
list_stock_adjustments | List stock adjustments |
get_stock_adjustment | Get adjustment details |
upsert_stock_adjustment | Create/update stock adjustment |
list_stock_transfers | List stock transfers |
get_stock_transfer | Get transfer details |
upsert_stock_transfer | Create/update stock transfer |
list_stock_counts | List inventory counts |
get_stock_count | Get count details |
upsert_stock_count | Create/update stock count |
list_manufacturing_orders | List work orders |
get_manufacturing_order | Get work order details |
upsert_manufacturing_order | Create a work order or partially update an existing one. Updates preserve unmentioned fields, patch output quantity/serials in place, merge input-line patches, and remove lines listed in deleteInputLineIds. |
| Tool | Description |
|---|---|
get_sales_order_serials | Extract serial numbers assigned to sales order lines |
get_purchase_order_serials | Extract serial numbers assigned to purchase order lines |
search_serial_number | Search fulfilled sales orders for a serial number |
list_serial_numbers | Aggregate serial numbers from fulfilled sales orders |
get_product_serials | Get all serial numbers for a serialized product using product inventory lines |
list_all_serials | List serial numbers across products that track serials |
| Tool | Description |
|---|---|
list_locations | List warehouse locations |
get_location | Get location details |
get_suggested_sublocations | Get bin/shelf suggestions |
list_categories | List product categories |
list_pricing_schemes | List pricing tiers |
list_payment_terms | List payment terms |
list_taxing_schemes | List tax schemes |
upsert_taxing_scheme | Create/update tax scheme |
list_tax_codes | List tax codes |
list_currencies | List currencies |
list_adjustment_reasons | List adjustment reasons |
list_custom_field_definitions | List custom fields |
get_custom_field_dropdown_options | Get dropdown options |
list_team_members | List inFlow users |
| Tool | Description |
|---|---|
list_webhooks | List webhook subscriptions |
upsert_webhook | Create/update webhook |
delete_webhook | Delete webhook |
List all active products in the "Electronics" categoryCreate a sales order for customer "Acme Corp" with:
- 5 units of product SKU-001 at $29.99 each
- 10 units of product SKU-002 at $15.00 each
Required by next FridayUpdate sales order SO-1001:
- change the required date to next Monday
- update line abc123 to quantity 2 with serial numbers SN-001 and SN-002
- remove line def456Receive all remaining items on purchase order PO-1001 at the Main WarehouseUnreceive 1 unit of product SKU-001 from purchase order PO-1001 as a dry run firstWhat's the current stock level for product "Widget Pro" across all locations?Show all in-stock serial numbers for product "Widget Pro"Transfer 50 units of "Widget Pro" from "Main Warehouse" to "Retail Store"Most list operations support filtering. For example:
list_products with name="Widget" and isActive=trueLarge result sets are paginated. Use skip and count parameters:
count: Number of records to return (max 100)skip: Number of records to skipNote: The default page size is 20 records. Always specify count when you need all records.
All list operations support sorting:
sort: Property name to sort by (e.g., "name", "modifiedDate", "orderDate")sortDesc: Set to true for descending orderlist_products with sort="modifiedDate" and sortDesc=trueTo get the total number of matching records (useful for pagination UI), use includeCount:
list_sales_orders with status="Open" and includeCount=trueResponse includes:
{
"data": [...],
"totalCount": 42
}Some endpoints support smart parameter for fuzzy searching across multiple fields:
list_customers with smart="acme" // Searches name, email, phone
list_sales_orders with smart="SO-2025" // Searches order fieldsUse the include parameter to fetch related data:
get_sales_order with include=["customer", "lines", "lines.product"]
get_product with include=["inventoryLines"]upsert_sales_order and upsert_manufacturing_order support safe partial updates when id is provided:
deleteLineIds are removed.deleteInputLineIds are removed.When updating records, include the timestamp field from the original record to prevent conflicts.
The inFlow API has a rate limit of 60 requests per minute. This server implements:
INFLOW_RATE_LIMIT environment variableThe server returns descriptive error messages from the inFlow API. Common errors include:
# Watch mode for development
npm run dev
# Build for production
npm run build
# Run the server
npm start
# Run tests
npm test
# Run tests in watch mode
npm run test:watch
# Run tests with coverage
npm run test:coverageMIT
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.