fbaInbound_orchestrate_packing

Create an FBA inbound plan through to PLACEMENT OPTIONS and stop: setPrepDetails → createInboundPlan → generate and confirm the packing option → setPackingInformation → generatePla

writeAmazon Seller (SP-API)sp.fulfillmentInbound_2024-03-20

cementOptions, each operation polled. Allow ~60 s. The human then picks a placement option for fbaInbound_generate_shipment_options. The marketplace comes from the store ref. Requires SP write access. Amazon SP-API · setPrepDetails · POST /inbound/fba/2024-03-20/items/prepDetails Amazon SP-API · createInboundPlan · POST /inbound/fba/2024-03-20/inboundPlans Amazon SP-API · getInboundOperationStatus · GET /inbound/fba/2024-03-20/operations/{operationId} Amazon SP-API · generatePackingOptions · POST /inbound/fba/2024-03-20/inboundPlans/{inboundPlanId}/packingOptions Amazon SP-API · listPackingOptions · GET /inbound/fba/2024-03-20/inboundPlans/{inboundPlanId}/packingOptions Amazon SP-API · confirmPackingOption · POST /inbound/fba/2024-03-20/inboundPlans/{inboundPlanId}/packingOptions/{packingOptionId}/confirmation Amazon SP-API · setPackingInformation · POST /inbound/fba/2024-03-20/inboundPlans/{inboundPlanId}/packingInformation Amazon SP-API · generatePlacementOptions · POST /inbound/fba/2024-03-20/inboundPlans/{inboundPlanId}/placementOptions Amazon SP-API · listPlacementOptions · GET /inbound/fba/2024-03-20/inboundPlans/{inboundPlanId}/placementOptions Amazon SP-API · getShipment · GET /inbound/fba/2024-03-20/inboundPlans/{inboundPlanId}/shipments/{shipmentId} Amazon SP-API · listShipmentBoxes · GET /inbound/fba/2024-03-20/inboundPlans/{inboundPlanId}/shipments/{shipmentId}/boxes Gate: approve, choice — interactive: show the change and the option (Amazon's preview first where one exists), wait for an explicit approve; autopilot: only when the seller's own words asked for this change, within named rule (one option, no tie); otherwise ask.

Call it

In an AI client (MCP)

tools/call
{
  "name": "fbaInbound_orchestrate_packing",
  "arguments": {
    "store": "myStore-US",
    "plan_name": "<plan_name>",
    "source_address": {},
    "items": [],
    "boxes": []
  }
}

From code (Tool API)

curl -X POST https://api.sellersheetai.com/api/v1/tools/fbaInbound_orchestrate_packing \
  -H "Authorization: Bearer $SELLERSHEET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"store":"myStore-US","plan_name":"<plan_name>","source_address":{},"items":[],"boxes":[]}'
Early access — the Tool API is open on request, contact us.

Arguments

NameTypeDescription
storerequiredstringthe store ref `<store>-<CC>` (name-country, e.g. 'myStore-US') — one of get_user_context's store_refs, verbatim.
plan_namerequiredstringcreateInboundPlan name, ≤40 chars.
source_addressrequiredobject{name, addressLine1, city, countryCode (ISO 3166-1 alpha-2), postalCode, phoneNumber} required; addressLine2, companyName, districtOrCounty, email, stateOrProvinceCode optional.
itemsrequiredobject[]1–2000 plan-level totals (not per box): [{msku (≤255), quantity (1–500000), labelOwner, prepOwner, expiration (YYYY-MM-DD, optional), manufacturingLotCode (optional, ≤256)}]. labelOwner and prepOwner: AMAZON | SELLER | NONE.
boxesrequiredobject[]1–5000 box specs: [{contentInformationSource, dimensions: {length, width, height, unitOfMeasurement IN | CM}, weight: {value, unit LB | KG}, quantity (1–10000 boxes of this spec), items: [{msku, quantity, labelOwner, prepOwner}]}]. contentInformationSource: BOX_CONTENT_PROVIDED (items required) | MANUAL_PROCESS | BARCODE_2D (both without items).
msku_prep_detailsobject[]1–100 of [{msku, prepCategory, prepTypes}], all three required — the prep the plan's MSKUs need (values in the setPrepDetails body below).
selected_packing_option_idstringsecond call only — the human's packingOptionId from data.packingOptions, sent with plan_id and the same items and boxes; the plan is continued, never re-created.
plan_idstringthe inboundPlanId (from fbaInbound_createInboundPlan or fbaInbound_listInboundPlans). Second call: the first call's data.planId with selected_packing_option_id. Alone, it continues THAT plan from generatePackingOptions — a plan_id never creates a second plan.Default: ""
sta_spreadsheet_idstringthe plan workbook's spreadsheet id (from fbaInbound_create_sta_sheet) — the server then renders the STA-Options tab (fee summary, one block per placement with every shipment's warehouse, status, Total QTY, Boxes, Weight and Volume); omit it and nothing touches a sheet.Default: ""

Result

Every tool answers {notification, data, human_action}; data carries:

  • data.planId — the inbound plan.
  • data.packingOptionId / data.packingGroupId — the confirmed packing.
  • data.requiresHumanSelection — true when several packing options need a human choice — data.packingOptions lists them and nothing further was done.
  • data.placementOptions — [{placementOptionId, status, expiration, shipmentCount, shipmentIds, placementFee, currency, aiRank, aiRec, shipments: [{shipmentId, warehouseId}]}] ranked by fee.
  • data.totalQty / data.totalBoxes — the plan's totals.

Params (Amazon schema; getInboundOperationStatus)

operationId*: string (max 38 chars)

Params (Amazon schema; generatePackingOptions)

inboundPlanId*: string (max 38 chars)

Params (Amazon schema; listPackingOptions)

inboundPlanId*: string (max 38 chars)
pageSize: integer (1–20)
paginationToken: string (max 1024 chars)

Params (Amazon schema; confirmPackingOption)

inboundPlanId*: string (max 38 chars)
packingOptionId*: string (max 38 chars)

Params (Amazon schema; setPackingInformation)

inboundPlanId*: string (max 38 chars)

Params (Amazon schema; generatePlacementOptions)

inboundPlanId*: string (max 38 chars)

Params (Amazon schema; listPlacementOptions)

inboundPlanId*: string (max 38 chars)
pageSize: integer (1–20)
paginationToken: string (max 1024 chars)
… (8 more lines; the Docs link above)

Body (Amazon schema; setPrepDetails)

marketplaceId*: string (max 20 chars)
mskuPrepDetails*: [{msku* (max 255 chars), prepCategory*, prepTypes*}] (1–100)
mskuPrepDetails.prepCategory: ADULT | BABY | FC_PROVIDED | FRAGILE | GRANULAR | HANGER | LIQUID | PERFORATED | SET | SHARP | SMALL | TEXTILE | UNKNOWN | NONE
mskuPrepDetails.prepTypes: [ITEM_BLACK_SHRINKWRAP | ITEM_BLANKSTK | ITEM_BOXING | ITEM_BUBBLEWRAP | ITEM_CAP_SEALING | ITEM_DEBUNDLE | ITEM_HANG_GARMENT | ITEM_LABELING | ITEM_NO_PREP | ITEM_POLYBAGGING | ITEM_RMOVHANG | ITEM_SETCREAT | ITEM_SETSTK | ITEM_SIOC | ITEM_SUFFOSTK | ITEM_TAPING]
Full schema: the Docs link above.

Body (Amazon schema; createInboundPlan)

destinationMarketplaces*: [string] (exactly 1) (max 20 chars)
items*: [{expiration, labelOwner*: AMAZON | SELLER | NONE, manufacturingLotCode (max 256 chars), msku* (max 255 chars), prepOwner*: AMAZON | SELLER | NONE, quantity* (1–500000)}] (1–2000)
sourceAddress*: {addressLine1* (max 180 chars), addressLine2 (max 60 chars), city* (max 30 chars), companyName (max 50 chars), countryCode* (2–2 chars), districtOrCounty (max 50 chars), email (max 1024 chars), name* (max 50 chars), phoneNumber* (max 20 chars), postalCode* (max 32 chars), stateOrProvinceCode (max 64 chars)}
+ 1 more: name
Full schema: the Docs link above.

Body (Amazon schema; setPackingInformation): {packageGroupings: [PackageGroupingInput]} (min 1), each item

boxes*: [{contentInformationSource*, dimensions*: {height*, length*, unitOfMeasurement*, width*}, items: [{expiration, labelOwner*, manufacturingLotCode, msku*, prepOwner*, quantity*}], quantity* (1–10000),
  weight*: {unit*, value*}}] (1–5000)
… (8 more lines; Full schema: the Docs link above.)

Workflow

  • With a plan workbook, read the item rows (row 14 on) by the row-1 machine keys — boxNo ("1", or "2~4" for boxes 2 to 4; several rows with one boxNo share a box), msku, qtyPerBox, boxDimensions ("LxWxH"), boxWeight, labelOwner, prepOwner, prepCategory, prepTypes — never by column letter, and build items (totals) and boxes from them. Afterwards show the placement options (placementFee, shipmentCount, warehouses; aiRank 1 = lowest fee) and let the HUMAN pick; the stepper, Manage Shipments and _state cells to write are in the fba-inbound skill.

Gotchas

  • A packing option with several packing groups is refused (the compound packs one group) — run fbaInbound_setPackingInformation per packingGroupId instead.

On this page

Actions

View as Markdown

Ask an assistant

Ask ChatGPTAsk Claude