Inbound Transfers: Receive Shipments with an LLM
Receive shipments in Flourish from Claude, ChatGPT, or any MCP client — look up vendors, open inbound transfers, and stage packages. Writes need approval.
Use Flourish's MCP server to receive shipments from your LLM interface — Claude, ChatGPT, Gemini, Grok, or any MCP-compatible client. This article covers the inbound-transfer 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. Look up vendors and vendor types
You can search the vendors you receive inventory from — by name, license number, or vendor type — and list vendor types (Cultivator, Distributor, …) to filter on. Only active vendors are returned. Resolve a vendor's ID here before opening a transfer from them.
2. Search and review inbound transfers
You can list the shipments arriving at a facility, filter by manifest number or status, and include each transfer's staged package lines. A dedicated lookup returns one transfer by manifest number with its lines nested.
3. Reference transfer and line statuses
It can list the statuses a transfer header can be in (for example, Pending Receipt) separately from the statuses a staged line can be in, so you can filter or interpret results correctly.
4. Open a new inbound transfer
It can open a transfer at a facility for an arriving shipment — given a manifest number and the sending vendor — starting it in Pending Receipt with no lines yet. Re-running the same request with the same manifest number returns the existing transfer instead of creating a duplicate.
5. Stage packages and inventory on a transfer
It can stage cannabis packages and non-cannabis inventory lines onto an open transfer in one call — each line by item, quantity, and (for cannabis) lot or package number. Up to 50 lines per call. This is also idempotent: re-staging the same line updates it rather than duplicating it.
Recommended Tool Permissions
Read tools are safe to allow freely. Both write tools here are idempotent — safe to retry — but still default to "Needs approval" since they create or change records in Flourish.
Tool | Type | Recommended Setting | Notes |
Vendors: Query ( | Read | Always allow | Searches active vendors by name, license, or type. Resolve a vendor ID before creating a transfer. |
Vendor Types: Get ( | Read | Always allow | Static reference data for vendor types. |
Inbound Transfers: Query ( | Read | Always allow | Lists shipments arriving at a facility, optionally with staged lines. |
Inbound Transfers: Get by ID ( | Read | Always allow | Returns one transfer by manifest number with its staged lines. |
Inbound Transfer Status: Get ( | Read | Always allow | Static reference data for header and line statuses. |
Inbound Transfers: Create ( | Write | Needs approval | Opens a transfer in Pending Receipt. Safe to retry with the same manifest number. |
Inbound Transfer Lines: Upsert ( | Write | Needs approval | Stages cannabis and non-cannabis lines on an open transfer. Max 50 lines per call. |
Example Prompts
- "Which vendors do we have set up, filtered to Cultivator type?"
- "What's the status of transfer [manifest number], and what's staged on it so far?"
- "Open a new inbound transfer at [facility] for manifest [number] from [vendor name]." (write — asks first)
- "Stage 10 units of [item] at lot [lot number] onto that transfer." (write — asks first)
- "Here's the invoice I just got from [vendor]. Stage it as an inbound transfer at [facility] with each line's lot number, and show me what you matched first." (write — asks first)
- "What statuses can an inbound transfer or its lines be in?"
Troubleshooting
I created the same transfer twice.
Pass the same manifest number each time. inbound_transfers_create uses it to find and return the existing transfer instead of opening a second one.
Staging a line failed.
Check that you're under the 50-line limit per call, and that the item resolves via items_query first. If you're staging a cannabis package, confirm the lot or package number matches what's on the shipment. A cannabis package that is already in stock, or already staged on another transfer that hasn't been received, is rejected. When any line in a call is rejected, nothing in that call is saved.
The transfer was refused at my facility.
Facilities with a Metrc or BioTrack integration can't open inbound transfers by hand. Those shipments arrive from the state system.
My AI client can't find a vendor I know is set up.
inbound_vendors_query only returns active vendors. Check whether the vendor was deactivated in Flourish.
How did we do?
Using Flourish with Gmail, Outlook, Slack, Calendar, QuickBooks and HubSpot
Manufacturing: Build BOMs and Work Orders with an LLM