Manufacturing: Build BOMs and Work Orders with an LLM
Manage bills of materials and manufacturing work orders in Flourish from Claude, ChatGPT, or any MCP client. Read tools always allowed; writes need approval.
Use Flourish's MCP server to manage bills of materials (BOMs) and manufacturing work orders from your LLM interface — Claude, ChatGPT, Gemini, Grok, or any MCP-compatible client. This article covers the manufacturing-specific tools. For how to connect, what the permission markers mean, and general troubleshooting, see Connecting to Flourish with an LLM Using Our MCP Server.
Core things it can do
1. Search and review bills of materials
You can search BOMs by name, SKU/item name, input or output item/category, and active status, then open a single BOM to see its header and component lines.
2. Check whether you can build a BOM right now
For a given BOM and facility, it can compare what the recipe calls for against on-hand inventory for the output item and every component line — answering "can I build this here" without paging through packages. You can optionally ask for a specific quantity to make.
3. Create a new BOM
It can create a BOM from scratch for an item, with component lines (each an item or item category, a quantity, and a unit of measure), plus optional nickname, quantity-to-create, effective date, and work instructions.
4. Copy a BOM to a new item
It can clone an existing BOM onto a target item, copying the header and component lines as a starting point you can then adjust. This is the fastest way to set up a product line: build one BOM you trust, then clone it to each strain and swap the strain-specific input.
5. Update an existing BOM
It can add, update, or remove component lines on a BOM, or change header fields like nickname, quantity-to-create, effective date, work instructions, and active status. Only the fields you mention change — everything else is left alone.
6. Look up an item's default manufacturing setup
For a given item, it can return the default run type, machine, and BOM — at a specific facility, or company-wide if you don't name one.
7. Search and review work orders
You can search manufacturing work orders at a facility by name, status, lot number, reference fields, and scheduled date range, including in-progress and completed runs. Open a single work order to see full detail.
8. Create a draft work order
It can create a draft work order (status Created) for an item, optionally using an item's default BOM, with a machine, run type, shift, schedule, and input packages or consumable inventory. This only drafts the run — it does not start, complete, cancel, or move cannabis.
9. Update a draft work order
It can change a draft work order's BOM, input packages, consumables, machine, run type, shift, schedule, labor hours, employee count, and process fields like temperature, pressure, and duration. Work orders are only editable through MCP while their status is Created — once a run has started, edit it in the app instead.
10. Reference data
It can list manufacturing machines and run types at a facility, company-wide shifts, and the manufacturing-run status catalog (id and label) used to interpret work order statuses.
Recommended Tool Permissions
Same rule of thumb as the main MCP article: read tools (names ending in _query or _get_by_id) are safe to allow freely. Write tools default to "Needs approval."
Tool | Type | Recommended Setting | Notes |
BOMs: Query ( | Read | Always allow | Searches BOMs by nickname, SKU, input/output item or category, active state. |
BOMs: Get by ID ( | Read | Always allow | Full BOM header and component lines. |
BOMs: Availability ( | Read | Always allow | BOM detail plus on-hand inventory for output and component items at one facility. |
BOM Defaults: Query ( | Read | Always allow | Default run type, machine, and BOM for an item. |
BOMs: Create ( | Write | Needs approval | Creates a new BOM header and component lines. |
BOMs: Clone ( | Write | Needs approval | Copies an existing BOM onto a target item. Each call creates a new BOM. |
BOMs: Update ( | Write (destructive) | Needs approval | Adds, edits, or removes component lines and header fields on an existing BOM. |
Work Orders: Query ( | Read | Always allow | Searches work orders, including in-progress and completed runs. |
Work Orders: Get by ID ( | Read | Always allow | Full detail for a single work order. |
Work Orders: Create ( | Write | Needs approval | Creates a draft work order (status Created). Does not start, complete, cancel, or move cannabis. |
Work Orders: Update ( | Write (destructive) | Needs approval | Edits a draft work order. Only works while status is Created. |
Machines: Query ( | Read | Always allow | Lists manufacturing machines at a facility. |
Run Types: Query ( | Read | Always allow | Lists manufacturing run types at a facility. |
Shifts: Query ( | Read | Always allow | Lists company shift records used to schedule work. |
Manufacturing Status: Get ( | Read | Always allow | Static reference data for manufacturing-run statuses. |
Example Prompts
BOMs
- "Show me the BOM for [item name] and tell me whether I can build 50 units at [facility] right now."
- "Create a new BOM for [item] using [component A] at 2 grams and [component B] at 1 unit each." (write — asks first)
- "Clone the BOM for [item A] onto [item B] and call it 'Q4 recipe.'" (write — asks first)
- "Clone the Gelato 1g pre-roll BOM onto the 1g pre-rolls for Blue Dream, Runtz and Sour Diesel, and swap in each strain's flower." (write — asks first)
- "Add a third component line to BOM [nickname] for 0.5 grams of [item]." (write — asks first)
Work orders
- "What work orders are scheduled at [facility] this week, and what status is each in?"
- "Draft a work order for [item] using its default BOM, scheduled for tomorrow morning on [machine name]." (write — asks first)
- "Add 3 more input packages to work order [id] and bump labor hours to 4." (write — asks first)
- "What manufacturing run types, machines, and shifts do we have set up at [facility]?"
Troubleshooting
My AI client says it can't find an item.
Give it the item name exactly as it appears in Flourish, or its SKU. Item search matches on name, retail display name, part number and SKU. If the item truly doesn't exist, create it in Flourish first; these tools can't create items.
A BOM or work order update was refused.
Work orders can only be edited through MCP while their status is Created — once a run has started, make the change in the app instead. For a BOM, confirm the BOM header ID and item ID match an existing BOM (resolve both via mfg_bom_query first).
A work order says a non-cannabis ingredient doesn't have enough quantity, but I have plenty.
This can happen when the ingredient's stock is split across several lots. The inventory lookup reports the total, but the work order draws from a single lot. For now, pick the specific lot in the app, or ask for a quantity that one lot can cover. A fix is in progress.
The availability check says a component is short, but I know we have stock.
mfg_bom_availability_get compares against on-hand inventory at one facility. If the component is stocked at a different facility, it won't show up here — check with packages_query or inventory_summary_query at that facility instead.
My AI client can't find a machine, run type, or shift I know exists.
Reference data queries default to active records only. Ask your AI client to include inactive machines or run types if you're looking for something that was deactivated.
How did we do?
Inbound Transfers: Receive Shipments with an LLM
Choosing a Model and Writing Good Prompts