Skip to main content
Glama
bigl34

inFlow Inventory MCP Server

by bigl34

upsert_manufacturing_order

Create a new manufacturing order or update an existing one in inFlow Inventory. When an ID is provided, it patches fields and merges line items; otherwise, it creates a new order.

Instructions

[LEGACY IMMEDIATE WRITE — HIGH RISK: BYPASSES INFLOW_ENABLE_SAFE_WRITES] Use set_manufacturing_order instead. Create a new manufacturing order or update an existing one. When id is provided, performs a partial update: unmentioned header fields and line items are preserved, outputSerialNumbers/outputQuantity patch the parent output line in place, inputLines[] patches merge into existing component lines by id (or unambiguous productId), and any deleteInputLineIds are removed. Without id, creates a new MO from outputProductId, outputQuantity, optional inputItems, and optional outputSerialNumbers.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idNoOrder ID (required for updates)
remarksNo
orderDateNoOrder date (ISO format)
timestampNoRowversion for optimistic concurrency — pass the value from the last GET
inputItemsNoInput/component items (used for create only — unused on updates)
inputLinesNoInput-line patches for updates. Each entry merges into an existing component line by `id` (or unambiguous `productId`); entries with no match are appended as new lines. Set `quantity`, `serialNumbers`, or `sublocation` to patch those fields; omit to preserve them.
locationIdNoLocation ID
isCancelledNoSet true to cancel the MO while preserving the rest of its state
isCompletedNo
orderNumberNoOrder number (e.g. MO-SYNTHETIC-001)
pickRemarksNo
customFieldsNo
requiredDateNoRequired completion date (ISO format)
outputQuantityNoQuantity to manufacture (required for creates; patches the output line on updates)
putAwayRemarksNo
outputProductIdNoProduct ID being manufactured (required for creates)
outputSublocationNoSublocation for the output line
deleteInputLineIdsNomanufacturingOrderLineId values to remove from the order during an update.
outputSerialNumbersNoSerial numbers / serial numbers for the output/finished product. On updates, patches quantity.serialNumbers on the parent output line; pass [] to clear.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.4.0-alpha.2

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so: it declares the legacy immediate-write status, the safe-writes bypass, and high risk up front, then documents partial-update semantics (unmentioned fields preserved, output line patched in place, inputLines merged by id or unambiguous productId, deleteInputLineIds removed). This is unusually rich disclosure for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The critical warning and redirect are front-loaded before any mechanics, and every subsequent sentence adds substantive merge/patch semantics. Dense but zero waste for a 19-parameter upsert.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 19-param, nested-object mutation tool with no annotations and no output schema, the create-vs-update mechanics are well covered. Remaining gaps are minor: optimistic-concurrency expectations (the `timestamp` rowversion) and required-field enforcement for creates are left to the schema rather than explained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 74%, above the baseline threshold, and the description still adds real meaning: it explains that `id` switches create vs update mode, that `inputItems` is create-only, that `inputLines[]` merges rather than replaces, and that `outputSerialNumbers` patches the parent output line (pass [] to clear). It stops short of covering concurrency (`timestamp`) behavior in prose, which the schema handles.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource and covers both modes explicitly: 'Create a new manufacturing order or update an existing one,' with the update branch triggered by `id`. It also names the sibling it supersedes, so the agent can distinguish it from set_manufacturing_order without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Opens with an explicit redirect ('Use set_manufacturing_order instead') and a risk flag, then gives the exact condition that selects each mode (`id` present = partial update, absent = create). Both when-to-use and when-to-avoid are stated, nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools