query_inventory
Current FBA inventory / stock health per SKU, per ASIN or per stock region — the dedicated source (same as the app's stock page), so quantities and days-of-inventory match the dashboard. Answers: what's about to run out (oosRiskFlag / low daysOfInventory), dead stock (withoutSales=true), reorder priorities (low projectedDaysOfInventory), how much stock is on hand, and whether a merchant-fulfilled (FBM) backup exists. Each row has totalFbaAvailable, totalFbaIncoming (= shipped + receiving), totalFbaInventory (= available + fcTransfer + reserved), afnReservedQuantity, fcTransferQuantity (units moving between Amazon FCs), totalFbaSellable (= available + fcTransfer, Amazon's On-hand and the daysOfInventory base, as Amazon's On-hand days of supply), salesVelocity (units/day, 30d), daysOfInventory, projectedDaysOfInventory (= sellable + reserved + inbound + the AWD stock and the units inbound to AWD when the product has AWD data, ÷ velocity: the Inventory page's « Days of supply · after inbound », Amazon's Total days of supply basis), oosRiskFlag (under 35 of those days), totalUnits30d, plus AMAZON'S INVENTORY STATES (the Manage FBA Inventory report's own columns): totalFbaInboundWorking (shipment plans created, nothing shipped: units still at the seller), totalFbaInboundShipped, totalFbaInboundReceiving, totalFbaUnsellable (Amazon's Unfulfillable: damaged, defective, expired — never sells), totalFbaResearching (misplaced units Amazon is confirming, 60 days at most), totalFbaSupply (Amazon's Total inventory supply for FBA = available + fcTransfer + reserved + unsellable + researching, the page's Total at Amazon), inboundUnits (the inbound the includeWorking switch shapes) and unitCog (the COGS per unit in the answer's currency, the organization's primary currency unless you pass currency: the SKU's own, or on an ASIN row the average weighted by sellable units over the SKUs that have one; null = none) with unitCogSkus / unitCogSkusWithCog / unitCogUnitsWithCog (the SKUs behind the row, those priced, the sellable units they hold: read unitCog as partial when they differ), plus the FBM block: fbmAvailable (the quantity the seller declares on the SKU's FBM listing, active or not; null = no FBM listing; fbmIsPlaceholder flags ≥10k sentinels such as 99999), fbmListingStatus ('Active'; or, with includeInactiveFbm=true only, 'Inactive' when Amazon has suppressed every FBM listing of the row while units stay declared: fbmAvailable shows them, fbmListedQuantity counts them 0, so name the listing inactive before reading its units as stock for sale; null = no FBM listing. By default an inactive listing is not a listing of the read: its fbm* figures are null on the row and an FBM-only inactive SKU is not listed, as on the Inventory page unless the seller switches « Include inactive » on), fbmAvailablePoolGlobal (the SKU's quantity once across regions — a seller declares ONE quantity that every marketplace repeats), fbmListedQuantity (the FBM listed quantity, rule B 2026-10-23: the PRODUCT's declared quantity once per ASIN, read at the seller's home marketplace (the one where it keeps the most active FBM listings) since 2026-10-24: the largest over the product's SKUs there, 0 when the product is listed there with no active listing, and only for a product not listed there the largest over its other SKUs and regions; carried on one row and 0 on the product's other rows, so it is the one to total across SKUs and regions: a seller lists one product under several SKUs with the same figure on each, and summing them counted its warehouse once per SKU; an ASIN row's fbmAvailable is the largest of its SKUs in that region, never their sum), fbmListedStockValue (it × the latest COGS of its SKU), fbmSalesVelocity, fbmStockValue (in currency, like unitCog), fulfillmentChannel ('MFN' = an FBM-only SKU), plus the SUBSCRIBE & SAVE block from the daily offer snapshot: snsOffers / snsIneligibleOffers (the SKU's S&S offers in the region, and every one of them that is not ELIGIBLE, SUSPENDED included: an INELIGIBLE offer's subscriptions are cancelled, while a SUSPENDED offer is one Amazon has suspended from Subscribe & Save, and its existing subscriptions still count in Amazon's figures, so in snsActiveSubscriptions and the forecasts too; what Amazon does with their deliveries is not established, so state the suspension, never a consequence; query_subscribe_and_save section offers tells the two apart), snsActiveSubscriptions, snsForecastUnits30d / 60d / 90d (Amazon's projected subscriber deliveries — the demand a restock has to serve, to read next to daysOfInventory), snsDeliveries30dAtRisk (Amazon's at-risk count never includes a suspended offer), snsSnapshotDate; null = no S&S offer on that SKU (≠ 0 = an offer without subscribers). The rest of the block, from the offers themselves (null = no offer, or not built yet): snsEligibility, the row's state over its offers, the one rule of every Subscribe & Save surface (SUSPENDED when a suspended offer carries subscribers; else ELIGIBLE when an offer is ELIGIBLE or REPLENISHMENT_ONLY_ORDERING; else SUSPENDED when an offer is suspended at all; else INELIGIBLE when every offer is; at the ASIN grain over EVERY offer of the ASIN in the region, a SKU row over its own), snsSuspendedOffers and snsSuspendedOffersWithSubscribers (the suspended offers behind the row, and those of them that carry subscribers: an ELIGIBLE row with '1 suspended offer, no subscribers' is the difference), snsDeliveries30dPausedNonBuyable, snsDeliveries30dPausedPricing and snsDeliveries30dLowInventoryRisk (snsDeliveries30dAtRisk by Amazon's condition, in units: PAUSED because the offer is not buyable or for pricing, AT RISK still scheduled but threatened by low inventory; the three add up to snsDeliveries30dAtRisk), snsSellerFundedBaseDiscountMinPct / MaxPct and snsSellerFundedTieredDiscountMinPct / MaxPct (the discount the seller funds on the offers, in %, Amazon's base and tiered discounts: the lowest and the highest over the offers, equal when they agree, null when Amazon reported none); and in metadata, with includeReorder=true, snsPresent (any active subscription on the accounts and stock regions of the read, product filters aside; absent = not known) and snsUnstocked (the subscriptions on products with no stock row, and how many products). By default every figure is FBA-only and FBM-only SKUs are not listed; pass includeFbm=true to count the FBM stock in daysOfInventory / oosRiskFlag / the velocity and to list FBM-only SKUs — the 'days before a TOTAL stockout, FBM backup included' view. ⚠️ The non-*Pool quantities are per-SKU and MUST NOT be summed across SKUs (a shared FNSKU pool would double-count); use the *Pool columns when totalling. The answer carries currency, the code unitCog and fbmStockValue are in; page with limit and offset (pagination.total counts the rows). Tip: sortBy="daysOfInventory", sortOrder="asc" to surface what runs out first; sortBy="fulfillmentChannel", sortOrder="desc" lists the FBM-only SKUs first, then FBA SKUs that also carry an FBM listing (needs includeFbm=true for FBM-only SKUs to be listed at all). REPLENISHMENT (includeReorder=true): each row gains the reorder block — externalStock (units the seller holds outside Amazon, own warehouse / 3PL, per stock region; null = never entered), onOrderUnits / nextExpectedAt (open supplier orders), the resolved lead times and targets (leadTimeProductionDays, leadTimeToWarehouseDays, leadTimeTransitDays, targetDaysAmazon, targetDaysExternal, the inputs get_setup domain=stock reports), coverageWithExternal and coverageTotal (days of cover once the external stock, then the open orders, are shipped in), and recommendedOrderQty = max(0, salesVelocity × (lead times + targets) − everything already in the pipeline), rounded up to casePackQty, and priced as freight by recommendedOrderWeightKg / recommendedOrderVolumeCbm (kg and m³, from the package Amazon measured for the ASIN — packageWeightKg / packageVolumeCbm per unit; null when never measured, never 0); recoStatus says why it is null ('params_missing': the seller has not entered lead times / targets — nothing is assumed; 'no_velocity'; 'narf_echo'). needsReorder=true keeps the products to order now; paramsMissing=true the ones with no parameters. Attributes of the (region, ASIN): identical on every SKU of an ASIN, never sum them across SKUs. STOCK LOCATIONS (groupBy='stockRegion'): the Inventory page's "Stock locations" tiles instead of rows: one tile per stock region (territory) in data, and totals, the All locations tile. Each tile carries the units at Amazon by Amazon's states, deduplicated so that they add up across territories (a stock shared by several SKUs counts once, a NARF echo zero): unitsSellable (available + FC transfer, the units at Amazon the tile shows), unitsAvailable, unitsIncoming (shipped + receiving), unitsInboundWorking (shipment plans created, nothing shipped), unitsUnsellable, unitsResearching, unitsSupply (Amazon's total inventory supply, the page's Total at Amazon) and unitsFbm (the FBM listed quantity: what the seller declares on its FBM listings, counted once per product, read at the seller's home marketplace (the largest over the product's SKUs there; a product not listed there takes the largest over its other SKUs), in the territory of that row; declared, not counted by Amazon, so never in the totals nor in the shares); contribution (the territory's share of the sellable units, in %; the FBM listed quantity never enters it, whatever includeFbm); productCount (the products holding stock there); atRiskCount (the products flagged oosRiskFlag there, short even once the inbound lands: not additive across territories, All locations counts each product once); stockValue (Stock value = the sellable units × the latest COGS per unit, 0 without a COGS) and fbmStockValue (the FBM listed quantity × the latest COGS of its SKU), both in the answer's currency; and valuation, the stock at cost state by state that the tile's Stock value opens on (2026-10-22): { units, value } for sellable (= stockValue), reserved, inbound (shipped + receiving), unfulfillable, researching, awdOnhand, awdInbound, warehouse (the warehouse / 3PL counts at the product's COGS per unit; null without includeReorder) and fbm, each at the latest COGS per unit in currency, with unpricedUnits, the units no COGS prices, which no value counts. With includeReorder=true every tile adds unitsExternal (At warehouse / 3PL), unitsOnOrder (On order), needsReorderCount (the products to order now) and recommendedOrderUnits (Units to order). Every switch and filter of the rows applies, so the tiles describe the rows the same call lists; sortBy, sortOrder, limit and offset do not apply to tiles. stockRegions keeps the tiles of those territories, while totals stays All locations: the page's summary never narrows on a territory. VENDOR CENTRAL (1P): this tool reads Seller Central stock only; a call whose accounts all sell through Vendor Central is refused, since the stock at Amazon is then Amazon's: read it with query_metrics, channels=['VENDOR'], and the metrics whose basis is 'stock' in list_metrics.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Text search, the page's search box: the SKU, the ASIN or the product name contains it (case-insensitive). | |
| skus | No | ||
| tags | No | "Your Filters" tag IDS from list_tags (manual custom tags or predefined segmentations, Brand included) — a tag NAME is rejected. | |
| asins | No | ||
| limit | No | ||
| offset | No | Row offset for pagination (default 0): read past the first `limit` rows. | |
| reason | No | One sentence, ALWAYS IN ENGLISH (regardless of the conversation language), on WHY you are making this call — the user question or your analytical goal. Recorded so the seller can see how their data is used. | |
| sortBy | No | Field to rank by. | |
| groupBy | No | 'sku' (default) = a row per stock region × SKU; 'asin' = a row per stock region × ASIN, its SKUs folded; 'stockRegion' = the page's Stock locations tiles, one per stock region plus `totals` (All locations), units deduplicated so they add up across territories (see STOCK LOCATIONS). | |
| accounts | No | Restrict to a subset of your own seller account IDs (from list_accounts). Omit to include all your accounts. A brand/account name is accepted and resolved to its id when it matches one of your accounts unambiguously; a label that carries the id ("Brand (A1B2C3D4E5F6G)") resolves to that id. | |
| currency | No | The currency of the amounts of the answer: one of the organization's configured codes, its primary or any of its secondary currencies (e.g. "USD"). Omit for the organization's PRIMARY currency, never your display currency. Any other code is refused. The answer's `currency` names the currency served. | |
| sortOrder | No | desc (default) = highest first; asc = lowest first. | |
| includeFbm | No | true = count the merchant-fulfilled (FBM) stock in daysOfInventory / oosRiskFlag / salesVelocity and list FBM-only SKUs; default false = FBA-only figures (the fbm* columns are returned either way). | |
| oosRiskFlag | No | true = only items flagged at out-of-stock risk: under 35 days of supply after inbound (AWD included when the product has AWD data), the page's « Still short after inbound ». | |
| marketplaces | No | The marketplaces of the read: country codes (US, DE), domains (amazon.de) or marketplace ids, as list_accounts gives them for each account. Keeps the stock that SERVES them, the page's rule: a row held in the marketplace's region, or selling there by an active offer while the product holds no stock of its own in that region (a UK row selling to Germany by EFN); the figures stay the region's, never split by country. Omit for every marketplace. | |
| needsReorder | No | true = only products with recommendedOrderQty > 0 (products without parameters have no recommendation and never match). | |
| stockRegions | No | Stock region codes, as the rows spell them ('USA', 'EU_FBA', 'UK', 'Canada'…; 'US', 'EU', 'GB' are accepted). | |
| withoutSales | No | true = only stock that is NOT selling (dead stock). | |
| paramsMissing | No | true = only products whose five reorder parameters do not all resolve (nothing typed, and a territory the fleet has no default for). | |
| includeReorder | No | true = add the replenishment block (external stock, open supplier orders, resolved lead times / targets, coverage past Amazon, recommendedOrderQty). Switched on automatically by needsReorder / paramsMissing / a reorder sort. | |
| includeWorking | No | true = count Amazon's Working inbound units (shipment plans created but not shipped, still at the seller) in inboundUnits, projectedDaysOfInventory, oosRiskFlag and the reorder supply, as Amazon's own Total days of supply does; default false = inbound is shipped + receiving only (totalFbaInboundWorking is returned either way). | |
| coverageTotalMax | No | Keep rows whose coverageTotal (days of supply once the warehouse / 3PL stock and the open orders are shipped in) is at most this. Switches includeReorder on; a row with neither a count nor an order has no coverageTotal and never matches. | |
| daysOfInventoryMax | No | Keep rows with days-of-inventory <= this (e.g. <=14 = running out soon). | |
| daysOfInventoryMin | No | Keep rows with days-of-inventory >= this. | |
| includeInactiveFbm | No | true = list the FBM listings Amazon has set to Inactive while units stay declared (with includeFbm): an FBM-only inactive SKU becomes a row, fbmListingStatus reads 'Inactive' and fbmAvailable shows the declared units, which fbmListedQuantity counts 0. Default false = the Inventory page's default: an inactive listing is not a listing of the read, its fbm* figures are null on the row and an FBM-only inactive SKU is not listed. | |
| daysUntilReorderMax | No | Keep rows whose daysUntilReorder (the days left before the order must be placed; negative = already late) is at most this: 14 = to order within two weeks, 0 with needsReorder=true = the page's Late chip. Switches includeReorder on; a product without a recommendation never matches. |