FBA Inbound Management Skill
Description
Helps a Seller (3P) create, manage, and execute inbound plans to ship inventory to Amazon's fulfillment network. It runs the full pipeline end-to-end, but it is not autonomous: every async write is polled to confirmed success before moving on, and at each decision gate (packing, placement, transportation, delivery window, cancellation) it presents the options and waits for the seller to choose — nothing irreversible happens without an explicit go-ahead.
Scope: Sellers (3P) only. Vendors (1P) use a separate Direct Fulfillment workflow. Only plans created with the v2024-03-20 flow are visible to these tools.
When to use this skill
Use when the seller wants to send inventory to FBA, check or modify an inbound plan or shipment, add tracking, get FNSKU labels, see prep requirements, or schedule an FC drop-off. Do not use for stockout/replenishment forecasting, listing content/issues, advertising, or order management.
Tools this skill orchestrates
All are SP-API Fulfillment Inbound v2024-03-20 tools on the amazon-selling-partner MCP server. Each
pipeline stage follows a generate → list → confirm pattern:
Status & management: fbaInbound_getInboundOperationStatus (poll async),
fbaInbound_listInboundPlans, fbaInbound_getShipment,
fbaInbound_updateShipmentTrackingDetails, fbaInbound_cancelInboundPlan.
The full tool set (labels, prep, compliance, self-ship, content updates, inspection)
is in tools-and-additional.md [blocked].
Every call needs
entityId(merchant id) and a marketplace (e.g.ATVPDKIKX0DERUS,A21TJRUUN4KGVIndia). Ask once and reuse.
The async pattern (do this after EVERY write)
Almost every write returns an operationId, not an immediate result. After each write:
- Poll
fbaInbound_getInboundOperationStatuswith theoperationId. SUCCESS→ proceed.FAILED→ report the error and advise recovery; do not proceed.IN_PROGRESS→ wait, then poll again with exponential backoff — give it ~10–15s before the first re-check, then roughly double each wait (≈15s → ≈30s → ≈60s). Don't hammer the API every couple seconds.- Cap at 3 polls. If it's still
IN_PROGRESSafter the 3rd check, stop: tell the seller it's taking longer than usual, give them theoperationId, and offer to check back later (re-poll on a later turn). Never poll forever. - Only advance to the next stage after confirmed success.
Tell the seller what you're doing: "Submitted — checking status… done, moving on."
Workflow (Pipeline + Inversion — sequential, ask at every gate)
Step 1 — Create the inbound plan
Gather source address, destination marketplace, and items (MSKU + quantity, and prep/
label owner). Call fbaInbound_createInboundPlan, poll status, note the inboundPlanId.
Step 2 — Set packing information
Gather boxes, what's in each box, dimensions, and weight. Call
fbaInbound_setPackingInformation (BOX_CONTENT_PROVIDED for pack-first), poll.
Ordering matters: set packing info before generating placement options. If you change box info after placement is generated, you must regenerate placement options (the split depends on the boxes). Use
fbaInbound_listShipmentItemsto pull a pick list for the boxes once shipments exist.
Step 3 — Pack option (decision gate)
fbaInbound_generatePackingOptions → poll → fbaInbound_listPackingOptions. Present
the grouping choices and wait for the seller's pick, then
fbaInbound_confirmPackingOption. (Confirm within 24–72h or the groups expire.)
Step 4 — Placement option (PERMANENT, fee-charging — HARD GATE)
fbaInbound_generatePlacementOptions → poll → fbaInbound_listPlacementOptions.
Present each option with its FC split and its placement fee in dollars — show the
fee before asking the seller to choose (never auto-pick the cheapest). The inbound API
has no preview/dry-run, and fbaInbound_confirmPlacementOption is permanent and
charges the placement fee — so it sits behind a hard gate:
- The seller explicitly picks one option.
- You restate the exact choice + the exact dollar fee + that it's permanent.
- The seller types
CONFIRM— a plain "ok"/"yes" is not enough.
Only after the typed CONFIRM do you call fbaInbound_confirmPlacementOption.
Step 5 — Transportation option (decision gate)
First collect the seller's ready-to-ship date and confirm the ship-from address —
fbaInbound_generateTransportationOptions needs the confirmed placementOptionId,
shipmentId, readyToShipDate, and shipFromAddress. Then generate → poll →
fbaInbound_listTransportationOptions. Present carrier / mode / quote in dollars
(Amazon Partnered SPD or LTL, or your own carrier) — show the cost before asking.
- Carrier mixing: shipments don't have to share one carrier — you can mix (e.g.
SPD + LTL, or PCP + non-PCP) only when the selections are on different shipping
modes and all shipments are PCP-eligible; otherwise mixing errors with
FBA_INB_0354. (Shipping modes go beyond SPD/LTL — see carriers-and-shipping.md [blocked].) - Non-partnered ordering: for a non-partnered carrier you must confirm the delivery
window (Step 6) BEFORE
fbaInbound_confirmTransportationOptions.
fbaInbound_confirmTransportationOptions locks the carrier and the quoted cost and has
no preview, so apply the same hard gate as placement: explicit pick → restate carrier +
exact dollar quote → seller types CONFIRM → only then confirm. See
carriers-and-shipping.md [blocked] for post-confirm steps,
void windows, and tracking.
Step 6 — Delivery window & post-confirmation
Run the delivery-window generate → list → confirm
(fbaInbound_generateDeliveryWindowOptions → …listDeliveryWindowOptions →
…confirmDeliveryWindowOptions). It's mandatory for non-partnered carriers (confirm it
before booking the FC appointment and before confirming transportation), and also
applies when enrolled in the confirmed-delivery-window program. Then guide the
carrier-specific finish: partnered SPD (schedule UPS pickup), partnered LTL (BOL,
freight-ready within 2 weeks), or non-partnered (collect tracking →
fbaInbound_updateShipmentTrackingDetails).
Step 7 — Summarize
Recap the plan: stage reached, shipments and destinations, carrier, and the single next action the seller must take.
Special workflows & extras
- Pack Later (unknown carton) and India (IN) marketplace differ — see special-workflows.md [blocked].
- Labels, prep, content updates, modify/cancel, inspection — see tools-and-additional.md [blocked].
Guardrails
- Ask at every decision gate. Present packing/placement/transport/delivery-window options and wait for the seller's choice — never auto-pick.
- Irreversible / fee-charging confirms sit behind a hard typed gate. The inbound API
has no preview mode, so for
fbaInbound_confirmPlacementOption(permanent + placement fee) andfbaInbound_confirmTransportationOptions(locks carrier + quoted cost): show the exact dollar amount, require an explicit pick, and require the seller to typeCONFIRM— never proceed on a vague "ok". Match the gate to the blast radius (a permanent, money-charging action gets the strongest gate). - Cancellation needs confirmation. Before
fbaInbound_cancelInboundPlan, warn that it voids all shipments and may incur charges outside the void window (24h SPD / 1h LTL); do not cancel without an explicit confirmation. - Always poll after a write — but bounded. Treat an
operationIdas pending, not done; confirmSUCCESSbefore proceeding, surfaceFAILEDhonestly, and cap polling at 3 attempts with exponential backoff (don't loop forever — hand off theoperationIdand offer to check back). - Never invent data. Use only addresses, quantities, and tracking the seller gives you and only options the tools return. No secrets/PII.
References
- carriers-and-shipping.md [blocked] — partnered SPD/LTL vs your own carrier, void windows, BOL/pallets, tracking.
- special-workflows.md [blocked] — Pack Later (LTL only) and the India FC workflow (compliance + self-ship appointments).
- tools-and-additional.md [blocked] — labels, prep, delivery windows, content updates, modify/cancel, full tool quick-reference, errors & constraints.
