Skip to main content

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.

An inbound transfer is a shipment arriving at one of your facilities. A vendor is who ships it to you — don't confuse this with a destination, which is who you ship to.
Opening and staging transfers by hand is only available at facilities without a Metrc or BioTrack integration. At integrated facilities, inbound transfers come from the state system, and the create tool will refuse and explain why. Staging never receives inventory: someone still receives the transfer in Flourish.

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.

Include the lot number when you stage. If the manifest or vendor invoice shows a lot, ask your AI client to stage it with each line. The receive screen does not currently let you type a lot for these lines. If none was staged, the line is received with no lot, or with an automatically generated one if your facility has that setting turned on.

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 (inbound_vendors_query)

Read

Always allow

Searches active vendors by name, license, or type. Resolve a vendor ID before creating a transfer.

Vendor Types: Get (inbound_vendor_type_get)

Read

Always allow

Static reference data for vendor types.

Inbound Transfers: Query (inbound_transfers_query)

Read

Always allow

Lists shipments arriving at a facility, optionally with staged lines.

Inbound Transfers: Get by ID (inbound_transfers_get_by_id)

Read

Always allow

Returns one transfer by manifest number with its staged lines.

Inbound Transfer Status: Get (inbound_transfer_status_get)

Read

Always allow

Static reference data for header and line statuses.

Inbound Transfers: Create (inbound_transfers_create)

Write

Needs approval

Opens a transfer in Pending Receipt. Safe to retry with the same manifest number.

Inbound Transfer Lines: Upsert (inbound_transfer_dtl_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

Contact