# Flieber (pypi · flieber)

Your Flieber account in your AI assistant: sales, forecast, inventory, replenishment and more.

- Trust score: 69/100 (medium)
- Change this week: +18
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- pypi · `flieber`: 69/100 (this document), [markdown](https://verifymcp.io/servers/com-flieber-flieber/flieber.md), [page](https://verifymcp.io/servers/com-flieber-flieber/flieber)

## Channel facts

- Registry: `pypi`
- Package: `flieber`
- Version: `0.1.14`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Supply Chain Security**: 100/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - Runs hatchling.build at install time, a recognised build step with no custom scripting around it.
  - 3 of 36 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 6/100
  - Repository check failed: no source repository is declared.
  - Provenance check failed: no build-provenance attestation is published.
  - License check failed: the license (Proprietary) isn't a recognized OSI-approved license.
  - Actively maintained (last published 3 days ago).
  - Security-disclosure policy not yet verified: we couldn't inspect the source repository.
- **Schema Quality & AI Usability**: 75/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 44668 tokens (~279/item across 160 items; 155 tools + 5 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 47/100
  - Stability observed for 14 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 6 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 157 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.
  - Supports UI / widget rendering.

## Install

### How do I install the Flieber MCP server?

Flieber runs locally as a PyPI package, launched with uvx flieber. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add com-flieber-flieber -- uvx flieber
```

### Cursor

```json
{
  "mcpServers": {
    "com-flieber-flieber": {
      "command": "uvx",
      "args": [
        "flieber"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "com-flieber-flieber": {
      "command": "uvx",
      "args": [
        "flieber"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add com-flieber-flieber -- uvx flieber
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-flieber-flieber": {
      "type": "local",
      "command": [
        "uvx",
        "flieber"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-flieber-flieber --command uvx --arg flieber
```

### Hermes

```yaml
mcp_servers:
  com-flieber-flieber:
    command: "uvx"
    args: ["flieber"]
```

### Netclaw

```json
{
  "McpServers": {
    "com-flieber-flieber": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "flieber"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add com-flieber-flieber -t stdio -c uvx -a flieber
```

### Other

```json
{
  "mcpServers": {
    "com-flieber-flieber": {
      "command": "uvx",
      "args": [
        "flieber"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-04 (score 69, +1)

No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-02 (score 68, +1)

No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-01 (score 67, +15)

- [security regression] Tool safety: pass → unverified
- [security regression] Stability: 0.30 → unverified
- [security improvement] Malware scan: unverified → pass
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Schema quality: 100 → unverified
- [functional] Package version: 0.1.13 → 0.1.14

### 2026-10-31 (score 52, −14)

- [security regression] Malware scan: pass → unverified
- [functional] Package version: 0.1.12 → 0.1.13

### 2026-10-30 (score 66, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-10-29 (score 51, −15)

- [security regression] Malware scan: pass → unverified
- [functional] Package version: 0.1.10 → 0.1.12
- [functional] Package version: 0.1.10 → 0.1.11

### 2026-10-28 (score 66, +16)

- [security improvement] Malware scan: unverified → pass

### 2026-10-27 (score 50, −15)

- [security regression] Malware scan: pass → unverified
- [functional] Package version: 0.1.8 → 0.1.10
- [functional] Package version: 0.1.8 → 0.1.9

## MCP tools (155)

### `ping` (~87 tokens)

Check the API key and the connection: returns the organisation the key reads and the environment called.

Input parameters:

- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `status` (~109 tokens)

What this key can see: its organisation, and which of the resources the other capabilities need it is granted and which it lacks. Call it first; a capability whose grant is missing fails with grant_missing.

Input parameters:

- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `tenants` (~127 tokens)

List the Flieber organisations your sign-in belongs to, with the ids to pass as `tenant`. Needs a Flieber sign-in (OAuth); an API key reads only its own organisation.

Input parameters:

- `page` (integer): The page, from 1; meta.next_page names the next one.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `account_status` (~102 tokens)

Whether a Flieber account is signed in, which account, its organisations, and the next step: a person with no organisation yet creates one with create_organization.

Input parameters:

- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `list_terms` (~106 tokens)

Flieber's active terms, in full. A person accepts them when they create their Flieber sign-in; create_organization returns them itself when Flieber still needs an explicit acceptance.

Input parameters:

- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `create_organization` (~390 tokens)

Create the signed-in person's Flieber organisation; it starts on Flieber Pro (14-day free trial). First call with commit=false: the preview shows the name and the plan it starts on. Commit with its preview_id once the person confirms. Flieber's terms were accepted when the person created their Flieber sign-in: don't show them or ask for acceptance. Only if the commit answers agreements_not_accepted (an account from before that consent), show the person the terms it returns, and commit again with its preview_id and accept_terms only after they have explicitly accepted them in this conversation; never accept them on their behalf.

Input parameters:

- `accept_terms` (array): Leave it out: Flieber's terms were accepted at sign-up. Only after a commit answered agreements_not_accepted: the agreement ids the person accepted, or ["all"], with that answer's preview_id, once th…
- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): Exactly one organisation.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…
- `wait_s` (number): On a commit: how long to wait for the new organisation to be ready, in seconds. If it is not ready by then (organization_not_ready), it still exists: call account_status in a minute and never commit…

### `signup_link` (~101 tokens)

The Flieber portal's sign-up page for this environment, for a person who would rather create their account and organisation in the browser. Needs no sign-in.

Input parameters:

- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `listings` (~219 tokens)

The organisation's listings: one row per product × store, with the product and store ids the signal capabilities filter by, SKUs, tier and lifecycle. Store names are not unique; use store_id.

Input parameters:

- `limit` (integer): Rows per page (1–100).
- `offset` (integer): Zero-based index of the first row.
- `product_ids` (array): Only these products (ids from `products` or `listings`).
- `search`: Substring match on product code or name.
- `status`: Only listings in this lifecycle status.
- `store_ids` (array): Only these stores (ids from `listings`).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…
- `tier`: Only listings in this revenue tier, A (highest) to D.

### `products` (~151 tokens)

The organisation's products, with the ids the signal capabilities filter by. Search by code or name.

Input parameters:

- `limit` (integer): Rows per page (1–100).
- `offset` (integer): Zero-based index of the first row.
- `product_ids` (array): Only these products (ids from `products` or `listings`).
- `search`: Substring match on product code or name.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `mapping` (~180 tokens)

The SKUs each store's channel reports, and the catalog product each is mapped to. The only capability that shows unmapped SKUs (mapped = false). store_ids is required.

Input parameters:

- `is_archived`: Only archived (true) or only non-archived (false) SKUs.
- `limit` (integer): Rows per page (1–100).
- `offset` (integer): Zero-based index of the first row.
- `store_ids` (array, required): The stores to list SKUs for (required; ids from `listings`).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `sales` (~377 tokens)

Actual sales: the units and net revenue each channel recorded, per period and per product, store or product × store. Only actual sales, never adjusted or forecast values. Default: weekly, the 90 days ending yesterday. No date after today; for the future use `forecast`.

Input parameters:

- `currency` (string): Currency of `revenue`.
- `end`: Last date, YYYY-MM-DD (UTC), clamped to the signal's window. Default: `start` plus 89 days when only `start` is given (a 90-day window; sales and adjusted stop at yesterday); otherwise yesterday (sal…
- `group_by` (string): One series per product (stores summed), per store, or per product × store.
- `interval` (string): Period of each row: day, week (from Monday) or month. Coarsened when over the cap.
- `limit` (integer): Series per page (not points).
- `metric` (string): units, revenue or both.
- `offset` (integer): Zero-based series offset: `meta.next_offset` of the previous page.
- `product_ids`: Only these product ids (from `listings`).
- `search`: Substring of the product code or name.
- `start`: First date, YYYY-MM-DD (UTC). Default: `end` minus 89 days (a 90-day window).
- `store_ids`: Only these store ids (from `listings`).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `adjusted` (~432 tokens)

Adjusted sales: actual sales corrected for stockouts, outliers and price effects (the forecast's input), per period and per product, store or product × store. Only dates up to yesterday. meta.boundary = approximate: Flieber does not expose where the adjusted history ends, so the most recent day or days may hold forecast values. Default: weekly, the 90 days ending yesterday. For dates from today on use `forecast`; for what channels recorded use `sales`; for the per-day corrections behind it use `forecast_past_adjustments`.

Input parameters:

- `currency` (string): Currency of `revenue`.
- `end`: Last date, YYYY-MM-DD (UTC), clamped to the signal's window. Default: `start` plus 89 days when only `start` is given (a 90-day window; sales and adjusted stop at yesterday); otherwise yesterday (sal…
- `group_by` (string): One series per product (stores summed), per store, or per product × store.
- `interval` (string): Period of each row: day, week (from Monday) or month. Coarsened when over the cap.
- `limit` (integer): Series per page (not points).
- `metric` (string): units, revenue or both.
- `offset` (integer): Zero-based series offset: `meta.next_offset` of the previous page.
- `product_ids`: Only these product ids (from `listings`).
- `search`: Substring of the product code or name.
- `start`: First date, YYYY-MM-DD (UTC). Default: `end` minus 89 days (a 90-day window).
- `store_ids`: Only these store ids (from `listings`).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `forecast` (~403 tokens)

Forecast: expected demand (units and net revenue) per period and per product, store or product × store, from today on. Never a past date; for those use `adjusted` or `sales`. Default: weekly, the 90 days starting today. meta.last_nonzero_forecast_period is the latest period with a non-zero forecast (zeros after it: past the horizon, or a zero forecast).

Input parameters:

- `currency` (string): Currency of `revenue`.
- `end`: Last date, YYYY-MM-DD (UTC), clamped to the signal's window. Default: `start` plus 89 days when only `start` is given (a 90-day window; sales and adjusted stop at yesterday); otherwise yesterday (sal…
- `group_by` (string): One series per product (stores summed), per store, or per product × store.
- `interval` (string): Period of each row: day, week (from Monday) or month. Coarsened when over the cap.
- `limit` (integer): Series per page (not points).
- `metric` (string): units, revenue or both.
- `offset` (integer): Zero-based series offset: `meta.next_offset` of the previous page.
- `product_ids`: Only these product ids (from `listings`).
- `search`: Substring of the product code or name.
- `start`: First date, YYYY-MM-DD (UTC). Default: `end` minus 89 days (a 90-day window).
- `store_ids`: Only these store ids (from `listings`).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `trends` (~255 tokens)

Trends per product × store: units over the previous 30, 90 and 365 days (adjusted sales), forecast units over the next 30 and 90 days, revenue over the previous and next 30 days, and the 30-day relative change, as Flieber last computed them. Rows carry names, not ids. For actual sales over a period you choose, compared with a year earlier, use `sales_trends`.

Input parameters:

- `currency` (string): Currency of the revenue columns.
- `limit` (integer): Rows per page.
- `offset` (integer): Zero-based row offset: `meta.next_offset` of the previous page.
- `product_ids`: Only these product ids (from `listings`).
- `search`: Substring of the product code or name.
- `store_ids`: Only these store ids (from `listings`).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…
- `tier`: Only products of this tier.

### `sales_trends` (~504 tokens)

Sales analytics ledger, as the app lists it: one row per product × store with its actual sales over a period (units, net revenue, per day, average price), its share of the organisation's totals, and the same period a year earlier with the relative change. Default: the last 365 days, to yesterday. Only active products unless include_discontinued (or product_status discontinued). Needs a Flieber sign-in. For actual sales per week or month use `sales`; for one row per tier, store, product or attribute value use `sales_trends_grouped`.

Input parameters:

- `attributes`: Only products with these attribute values, each `Name=Value`; values of one name are ORed, names are ANDed.
- `currency` (string): Currency of the revenue columns.
- `descending` (boolean): With order_by: largest first (default), else smallest first.
- `end`: Last day, YYYY-MM-DD (UTC), included. Default: yesterday.
- `include_discontinued` (boolean): Also count discontinued products. By default Flieber counts active products only, as the app does; asking for product_status discontinued turns this on.
- `order_by`: Sort by this column. Default: by forecast trend.
- `page` (integer): The page, from 1; meta.next_page names the next one.
- `page_size` (integer): Rows per page.
- `product_ids`: Only these product ids (from `listings`).
- `product_status`: Only these statuses on the store: active, sell_through, discontinued.
- `search`: Product code, name or SKU contains this.
- `start`: First day, YYYY-MM-DD (UTC), included. Default: the same date one year before the day after `end` (the app's "Last 365 days"), moved up to the earliest allowed start when that is later. At most 733 d…
- `store_ids`: Only these store ids (from `listings`).
- `supplier_ids`: Only products of these suppliers (supplier_id of `sales_trends`).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…
- `tiers`: Only products of these tiers.

### `sales_trends_grouped` (~555 tokens)

Sales analytics ledger grouped, as the app's group-by lists it: one row per product, store, tier or value of one product attribute, with its actual sales over a period (units, net revenue, per day, average price), its share of the organisation's totals, how many product × store rows it holds, and the same period a year earlier with the relative change. Default: the last 365 days, to yesterday. Only active products unless include_discontinued (or product_status discontinued). Needs a Flieber sign-in. For one row per product × store use `sales_trends`.

Input parameters:

- `attribute`: With group_by attribute: the attribute's name (e.g. Color).
- `attributes`: Only products with these attribute values, each `Name=Value`; values of one name are ORed, names are ANDed.
- `currency` (string): Currency of the revenue columns.
- `descending` (boolean): With order_by: largest first (default), else smallest first.
- `end`: Last day, YYYY-MM-DD (UTC), included. Default: yesterday.
- `group_by` (string, required): One row per product, per store, per tier, or per value of one product attribute.
- `include_discontinued` (boolean): Also count discontinued products. By default Flieber counts active products only, as the app does; asking for product_status discontinued turns this on.
- `order_by`: Sort by this column. Default: by forecast trend.
- `page` (integer): The page, from 1; meta.next_page names the next one.
- `page_size` (integer): Rows per page.
- `product_ids`: Only these product ids (from `listings`).
- `product_status`: Only these statuses on the store: active, sell_through, discontinued.
- `search`: Product code, name or SKU contains this.
- `start`: First day, YYYY-MM-DD (UTC), included. Default: the same date one year before the day after `end` (the app's "Last 365 days"), moved up to the earliest allowed start when that is later. At most 733 d…
- `store_ids`: Only these store ids (from `listings`).
- `supplier_ids`: Only products of these suppliers (supplier_id of `sales_trends`).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…
- `tiers`: Only products of these tiers.

### `adjust_forecast` (~282 tokens)

Set or clear a month's units forecast adjustment for a product in a store, as the Portal's forecast editor does on Apply. Like Apply, it replaces the month's whole adjustment, including any revenue adjustment. Preview first (commit=false), then commit with the preview_id. It cannot be undone as such: clearing the month removes the adjustment but does not bring back an earlier one. A commit recomputes the demand forecast before it answers; the inventory forecast built on it is recomputed afterwards in the background, so it can show the old numbers for a while.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): The months to adjust, for at most 2 product-stores per call. One product-store's months go in one request, as the Portal's Apply sends them.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `forecast_weekly_adjustment_set` (~418 tokens)

Set or clear weekly forecast adjustments, in units, for one product in one store, as the app's Sales forecast editor does by week: `units` sets the week's total (Absolute), `units_per_day` each day's units (Daily), `units_percent` changes the week's forecast by a percentage, and `clear` removes the week's adjustment. Weeks run Monday to Sunday; the current week from today. For whole months use `adjust_forecast`, for single days `forecast_daily_adjustment_set`. Like the app's Apply, each item replaces every adjustment of its days, revenue adjustments included. A commit recalculates this product-store's demand forecast before it answers; the inventory forecast built on it is recomputed in the background (meta.warnings says so). There is no undo: to go back, set the old values again or clear the periods (read the forecast first with `forecast`). Preview first (commit=false): Flieber's own preview gives each period's forecast units before and after, and changes nothing. Then commit with the preview_id. Needs a Flieber sign-in.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): The weeks to set or clear, one item per week, for this one product-store.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `product_id` (string, required): The product's id (from products or listings).
- `store_id` (string, required): The store's id: the selling account the product is sold in (from listings).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `forecast_daily_adjustment_set` (~398 tokens)

Set or clear daily forecast adjustments, in units, for one product in one store, as the app's Sales forecast editor does by day: `units` sets the day's units, `units_percent` changes the day's forecast by a percentage, and `clear` removes the day's adjustment. Today and later days only. For weeks use `forecast_weekly_adjustment_set`, for whole months `adjust_forecast`. Like the app's Apply, each item replaces every adjustment of its days, revenue adjustments included. A commit recalculates this product-store's demand forecast before it answers; the inventory forecast built on it is recomputed in the background (meta.warnings says so). There is no undo: to go back, set the old values again or clear the periods (read the forecast first with `forecast`). Preview first (commit=false): Flieber's own preview gives each period's forecast units before and after, and changes nothing. Then commit with the preview_id. Needs a Flieber sign-in.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): The days to set or clear, one item per day, for this one product-store.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `product_id` (string, required): The product's id (from products or listings).
- `store_id` (string, required): The store's id: the selling account the product is sold in (from listings).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `forecast_trends_grouped` (~366 tokens)

The forecast ledger summed by product, store, tier or a catalog attribute, as the app's Sales forecast page shows it with Group by: per group, its listings, units over the previous 30, 90 and 365 days (adjusted sales), forecast units over the next 30, 90 and 365 days, revenue over the previous and next 30 days and the 30-day relative change, as Flieber last computed them. Discontinued listings are left out, as Flieber does by default. For one row per product × store use `trends`. Needs a Flieber sign-in.

Input parameters:

- `attribute`: With group_by=attribute: the catalog attribute's name, e.g. Brand.
- `currency` (string): Currency of the revenue columns.
- `group_by` (string, required): What to sum the ledger by, as the app's Group by offers: product, store, tier, or a catalog attribute (name it in `attribute`).
- `page` (integer): The page, from 1; meta.next_page names the next one.
- `page_size` (integer): Groups per page.
- `product_ids`: Only these product ids (from `listings`).
- `search`: Product code or name, or a SKU, contains this.
- `store_ids`: Only these store ids (from `listings`).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…
- `tiers`: Only listings of these tiers (e.g. A, B).

### `inventory_manual_sync_status` (~159 tokens)

The status of the app's manual inventory update (the Update button on the inventory balance, inventory forecast and inbound shipments pages): when integration inventory and inbound shipments last arrived, when the last manual update finished, whether one is running, when its 10-minute cooldown ends, and whether the app would allow an update now. Flieber answers it only for an organisation with manual inventory updates turned on. Needs a Flieber sign-in (OAuth).

Input parameters:

- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `inventory_manual_sync` (~326 tokens)

Run the app's manual inventory update (its Update button): Flieber promotes the inventory its integrations sent, reprocesses inbound shipments, and queues an asynchronous recompute of the forecast and the inventory forecast. The preview reads the status and rejects it, as the app's button does, within 10 minutes of the last one finishing or when no integration data arrived since; stricter than the app, it also waits while Flieber has an update marked as running (one that never finished blocks it until Flieber clears it). A commit re-reads the status and sends nothing then. A commit can't be undone, but it only applies data the integrations already sent, and repeating it is safe: Flieber refuses another update for 10 minutes after one finishes. Preview first (commit=false), then commit with the preview_id. Needs a Flieber sign-in (OAuth).

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array): Leave it out: the update takes no fields (one empty object, [{}]).
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `inventory_location_balance` (~199 tokens)

One inventory location's balance by SKU, as the app's Edit inventory balance page for that location shows it: units on hand and on order for each SKU mapped to the location (discontinued products included), and whether its balance can be edited by hand (no integration feeds the location). 100 SKUs per page. Needs a Flieber sign-in (OAuth).

Input parameters:

- `location_id` (string, required): The inventory location's id (from onboard_list_locations).
- `page` (integer): The page, from 1; 100 SKUs per page.
- `search`: Only SKUs whose SKU, product code or product name contains it.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `inventory_balance_edit` (~311 tokens)

Set or clear SKUs' units on hand at one inventory location, as the app's Edit inventory balance page does on Save: one location per call, only SKUs mapped to it, and only at a location no integration feeds (a store connection's or a Google Sheet's location is read-only in the app too). A commit replaces each SKU's units on hand there; clear removes its balance at the location. It can be undone by setting the previous units again (the preview shows them as units_before). Flieber then recomputes the inventory forecast asynchronously. Preview first (commit=false), then commit with the preview_id. Needs a Flieber sign-in (OAuth).

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): One item per SKU, each SKU once.
- `location_id` (string, required): The inventory location (from onboard_list_locations); one location per call, as the app edits one location's page.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `replenishment_plans` (~306 tokens)

The organisation's replenishment plans (purchase and transfer plans), newest first, as the Flieber app lists them: completed plans unless status asks for drafts (pending). Filter by type, supplier, origin or destination location, creation date or name. Needs a Flieber sign-in.

Input parameters:

- `created_after`: Only plans created on or after this date.
- `created_before`: Only plans created on or before this date.
- `destination_location_ids` (array): Only plans to any of these inventory locations.
- `origin_location_ids` (array): Only transfers from these inventory locations.
- `origin_supplier_ids` (array): Only plans from these suppliers.
- `page` (integer): The page, from 1; meta.next_page names the next one.
- `page_size` (integer): Plans per page (1–100).
- `replenishment_type`: purchase (from a supplier) or transfer (between your locations).
- `search`: Plans whose name contains this text.
- `status` (array): Plan statuses to list (default completed, as the app's list). pending is a draft that was never saved; in_progress and failed occur only on legacy plans.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `replenishment_plan` (~447 tokens)

One replenishment plan as the Flieber app shows it: a page of its lines (product × destination: needs, the units it orders, cost, days of stock), and in meta.summary the plan itself (as replenishment_plans lists it), totals over every listed line, not just this page (replenishment_needs, order_units, replenishment_needs_purchase_cost, total_inventory_value, in USD), its origins and destinations by name, and container use (how its order units fill 20GP/40GP/40HC/45HC containers, with warnings such as products missing carton dimensions; only where the carton dimensions editing feature is turned on, else meta.warnings says it is left out). Lines are computed for the plan's own coverage period. As in the app, lines and totals leave out products that were discontinued when the plan was calculated (product_status_at_creation; product_status, today's, where none was recorded) unless include_discontinued; origins, destinations and container use cover every line. Needs a Flieber sign-in.

Input parameters:

- `include_discontinued` (boolean): Also list and total the lines of discontinued products. Off, as in the app, they are hidden: in a preview, products discontinued today; in a saved plan, products that were discontinued when the plan…
- `ordering`: Sort the lines by this column, `-` first for descending (default: Flieber's order).
- `page` (integer): The page, from 1; meta.next_page names the next one.
- `page_size` (integer): Lines per page (1–100).
- `plan_id` (string, required): The plan, from replenishment_plans.
- `search`: Only lines whose product name or code contains this text.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `replenishment_needs_preview` (~528 tokens)

What to order or transfer for a coverage period, before any plan exists: the replenishment needs per product × destination from the current inventory forecast, as the Flieber app shows an unsaved plan. Narrow it by type, destinations, suppliers, origin locations or product × location pairs; as in the app, only active products unless include_discontinued. meta.summary holds totals over every listed line, not just this page (replenishment_needs, replenishment_needs_purchase_cost, total_inventory_value, in USD), and the origins and destinations by name. It saves nothing and creates no plan. Needs a Flieber sign-in.

Input parameters:

- `collision_resolutions` (array): For a product stocked through both a fulfillment and a storage location: which to replenish.
- `coverage_period_from` (string, required): The first day to cover (arrival): today or later.
- `coverage_period_to` (string, required): The last day to cover: on or after coverage_period_from, at most 365 days from today.
- `destination_location_ids` (array): Only these destination inventory locations.
- `include_discontinued` (boolean): Also list and total the lines of discontinued products. Off, as in the app, they are hidden: in a preview, products discontinued today; in a saved plan, products that were discontinued when the plan…
- `ordering`: Sort the lines by this column, `-` first for descending (default: Flieber's order).
- `origin_location_ids` (array): Only transfers from these inventory locations.
- `origin_supplier_ids` (array): Only purchases from these suppliers.
- `page` (integer): The page, from 1; meta.next_page names the next one.
- `page_size` (integer): Lines per page (1–100).
- `products_locations` (array): Only these product × destination pairs (the app's selected rows).
- `replenishment_type`: purchase (from suppliers) or transfer (between your locations); both if unset.
- `search`: Only lines whose product name or code contains this text.
- `target_shipment_departure`: A transfer's departure date (sets the units available at the origin).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `replenishment_plan_delete` (~326 tokens)

Delete one replenishment plan, as the Flieber app's Delete does. It cannot be undone: the plan and all its lines are removed for the whole organisation; shipments it was converted to stay, and only lose their link to it. It changes no inventory forecast. Preview first (commit=false) and show the person the plan; then ask them to type the plan's exact name, and commit with the preview_id and what they typed as confirm_name. A missing or different confirm_name deletes nothing; a repeated commit is refused (the plan no longer exists). A legacy (v1) plan still calculating is refused, as in the app. Needs a Flieber sign-in.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `confirm_name`: commit=true only, and required then: the plan's exact name as the person typed it after seeing the preview. Ask them to type it; never fill it in yourself. A different or missing name deletes nothing.
- `items` (array, required): Exactly one plan.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `replenishment_plan_convert` (~505 tokens)

Convert one saved replenishment plan into inbound shipments, as the Flieber app's Convert to shipments does: Flieber creates one shipment per destination from the plan's lines and marks the plan converted. It runs once and cannot be undone: nothing in flieber or Flieber's API reverses it, and the shipments count as incoming stock in the inventory forecast, which Flieber recomputes asynchronously. The preview (commit=false) changes nothing and lists the shipments it would create (code, destination, delivery date, each product's quantity), computed from the plan's lines with Flieber's rule. Only a completed plan (not a legacy one) that is not converted and has something to ship converts; a plan with more than 400 lines is refused (convert it in the app). Show the person the preview; then ask them to type the plan's exact name, and commit with the preview_id, the preview's upstream_preview_id (a digest of its shipments) and what they typed as confirm_name. A missing or different confirm_name converts nothing; a plan changed since the preview is refused with preview_mismatch and converts nothing. The commit lists the shipments it asked Flieber to create; run replenishment_plan and inventory_shipments to confirm. Needs a Flieber sign-in.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `confirm_name`: commit=true only, and required then: the plan's exact name as the person typed it after seeing the preview. Ask them to type it; never fill it in yourself. A different or missing name converts nothin…
- `items` (array, required): Exactly one plan.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…
- `upstream_preview_id`: commit=true only: the preview's meta.upstream_preview_id, unchanged. It is a digest of the shipments the preview listed: a plan changed since the preview (its lines, quantities or coverage) is refuse…

### `forecast_review_ratings` (~1390 tokens)

The Forecast review ledger, as the app shows it: one row per listing (product × store) with ten metrics of how hard its forecast is (outliers, level shifts, stockouts and dips, peaks, auto- and manual adjustments, seasonality), each labelled by percentile against comparable listings across Flieber, grouped by channel and tier (by default VERY SMALL, SMALL, HIGH, VERY HIGH, or N/A). Ratings are computed daily. Filter by search, stores, tiers, new listings and each metric's labels (indexes from forecast_review_rating_labels); sort with ordering; page by page number. Needs a Flieber sign-in, and Forecast review enabled for the organisation (Flieber refuses otherwise).

Input parameters:

- `auto_adjustment_intensity_labels` (array): Only listings whose 'Intensity of auto-adjustments' (auto_adjustment_intensity) label is one of these: 0, 1, 2 or 3 (the label_names of forecast_review_rating_labels, in order) or na (not rated). Sev…
- `auto_adjustment_share_labels` (array): Only listings whose 'Duration of auto-adjustments' (auto_adjustment_share) label is one of these: 0, 1, 2 or 3 (the label_names of forecast_review_rating_labels, in order) or na (not rated). Several…
- `days_below_avg_min_share_labels` (array): Only listings whose 'Intensity of stockouts / dips' (days_below_avg_min_share) label is one of these: 0, 1, 2 or 3 (the label_names of forecast_review_rating_labels, in order) or na (not rated). Seve…
- `is_new_listing`: true: only new listings (a short sales history); false: none of them; omit for both.
- `manual_correction_intensity_labels` (array): Only listings whose 'Level of manual correction' (manual_correction_intensity) label is one of these: 0, 1, 2 or 3 (the label_names of forecast_review_rating_labels, in order) or na (not rated). Seve…
- `max_vs_avg_max_labels` (array): Only listings whose 'Intensity of sales peaks' (max_vs_avg_max) label is one of these: 0, 1, 2 or 3 (the label_names of forecast_review_rating_labels, in order) or na (not rated). Several values matc…
- `median_vs_mean_labels` (array): Only listings whose 'Likelihood of outliers' (median_vs_mean) label is one of these: 0, 1, 2 or 3 (the label_names of forecast_review_rating_labels, in order) or na (not rated). Several values match…
- `median_vs_mode_labels` (array): Only listings whose 'Likelihood of sales level shift' (median_vs_mode) label is one of these: 0, 1, 2 or 3 (the label_names of forecast_review_rating_labels, in order) or na (not rated). Several valu…
- `min_vs_avg_min_labels` (array): Only listings whose 'Likelihood of stockouts / dips' (min_vs_avg_min) label is one of these: 0, 1, 2 or 3 (the label_names of forecast_review_rating_labels, in order) or na (not rated). Several value…
- `monthly_max_vs_median_labels` (array): Only listings whose 'Likelihood of seasonal pattern' (monthly_max_vs_median) label is one of these: 0, 1, 2 or 3 (the label_names of forecast_review_rating_labels, in order) or na (not rated). Severa…
- `ordering`: Sort by one field, ascending, or descending with a leading '-' (e.g. '-avg_daily_units'): id, product_code, product_name, selling_account_name, channel, tier, avg_daily_units, tier_basis_value, is_ne…
- `page` (integer): The page, from 1; meta.next_page names the next one.
- `page_size` (integer): Listings per page (1-100; the app shows 50).
- `range_vs_median_labels` (array): Only listings whose 'Intensity of outliers / unstable pattern' (range_vs_median) label is one of these: 0, 1, 2 or 3 (the label_names of forecast_review_rating_labels, in order) or na (not rated). Se…
- `search`: Only listings whose product code, product name or store name contains this.
- `store_ids` (array): Only these stores (ids from `listings`). The app sends the stores selected in its store picker; flieber has no such selection, so omit it for every store.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…
- `tiers` (array): Only these tiers (the listing's average-daily-units bucket, as the rows show it; the default tiers are 200, 100, 50, 10 and 0).

### `forecast_review_rating_labels` (~144 tokens)

The Forecast review label vocabulary, which the app loads before the ledger: one row per metric of forecast_review_ratings with its title, the input that filters it, the label names in index order (index 0..3 is what a label filter takes) and the N/A label. Needs a Flieber sign-in, and Forecast review enabled for the organisation.

Input parameters:

- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `catalog_attributes` (~113 tokens)

The custom attributes on the organisation's product × store rows: every name and value in use, and how many rows hold each, as the app's Assign custom attributes dialog offers them. Needs a Flieber sign-in.

Input parameters:

- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `catalog_attributes_assign` (~472 tokens)

Set custom attributes on product × store rows, as the app's Assign custom attributes dialog does. mode=replace makes each row's attributes exactly the ones given (none clears them); mode=merge adds them, replacing the value of a name a row already has. The preview reads each row and shows its attributes before and after; a pair that is not a product × store row, or a merge past 10 attributes, would be rejected, and a row that would not change is left alone. A commit changes only those rows' attributes, for the whole organisation (the catalog, its filters and groupings); it changes no forecast or inventory number. There is no undo: to restore a row, assign its attributes_before from the preview with mode=replace. Preview first (commit=false), then commit with the preview_id. Needs a Flieber sign-in. To add products or SKUs, or map SKUs to products, use onboard_map_skus.

Input parameters:

- `attributes` (array, required): The attributes to set, each name once, at most 10 (a row holds at most 10). catalog_attributes lists the names and values in use.
- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): The product × store rows to change, each once. One call reads them in at most 4 requests: one per store, or one per product when there are fewer products.
- `mode` (string, required): replace: each row's attributes become exactly `attributes` (an empty list clears them), as the app's single-row edit does. merge: `attributes` are added to each row's, replacing the value of a name i…
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `catalog_bundles` (~211 tokens)

The organisation's product bundles: one row per component of a bundle product, with how many units of it one bundle holds, as the app's Edit product bundles sheet lists them. Pages by page number (meta.next_page). Needs a Flieber sign-in.

Input parameters:

- `bundle_product_ids` (array): Only bundles of these products (ids).
- `component_product_ids` (array): Only bundles with these products as components (ids).
- `page` (integer): The page, from 1; meta.next_page names the next one.
- `page_size` (integer): Rows per page (1–100).
- `search`: Substring of a bundle's or a component's code or name.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `catalog_bundles_edit` (~299 tokens)

Add bundle components, change their quantity, or remove them, by product code, as the app's Edit product bundles sheet saves them. A commit changes the organisation's bundles and makes Flieber recompute the inventory forecast of the bundle and component products, asynchronously (a commit that applied an item says so in meta.warnings). There is no undo: a removed component comes back only by setting it again, with its quantity from catalog_bundles. The preview checks the items here and calls nothing; Flieber checks at commit that the codes are products and that no product is both a bundle and a component, item by item. Preview first (commit=false), then commit with the preview_id. Needs a Flieber sign-in.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): The bundle components to set or remove, each bundle and component pair once.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `catalog_set_status` (~363 tokens)

Set the chosen status of listings (product × store), as the app's catalog editor saves "Chosen status in Flieber" and its "Mark as discontinued" does: active, sell_through (sell the stock left, then stop), discontinued, or follow_channel (clear it, so the status follows the sales channel). A commit changes only the chosen status of each listing named; it is reversible (set it back) and never creates a listing. The forecast and the inventory forecast pick the change up at their next daily recalculation (a discontinued listing can switch to the moving-average fallback, or be zeroed where Flieber has set that up); pages and reads that filter by status show it at once. sell_through needs Sell-Through status enabled for the organisation, as in the app: otherwise the call is refused (feature_not_enabled) before anything is sent. Preview first (commit=false), then commit with the preview_id. Needs a Flieber sign-in.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): The listings to change, at most 100 per call, each named by its product_id and store_id (from listings); each listing at most once.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `catalog_set_backorders` (~278 tokens)

Allow or stop backorders on listings (product × store), as the app's catalog editor saves "Support backorders": whether the listing can keep selling while out of stock. A commit changes only that setting of each listing named; it is reversible (set it back) and never creates a listing. The inventory forecast picks the change up at its next daily recalculation, so reads show the old numbers until then (the commit's warnings say so). Preview first (commit=false), then commit with the preview_id. Needs a Flieber sign-in.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): The listings to change, at most 100 per call, each named by its product_id and store_id (from listings); each listing at most once.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `catalog_set_product` (~376 tokens)

Rename products or change their image, as the app's catalog editor and AI Lab's Product Catalog upload do. Each item names a product by its product_id and the store_id of any one of its listings (from listings), with a new name, a new image_url, or both. The name and image are the product's own, so the change shows on every store that sells it; each product goes once per call. An image can be replaced but cannot be cleared, and a name cannot be blank. A commit changes only the name and image; it changes no forecast or inventory number, and is reversible (set the old name or image back, from the preview's name_before and image_url_before), except that an image added to a product that had none cannot be removed (the preview warns). Preview first (commit=false), then commit with the preview_id. Needs a Flieber sign-in. To add products or SKUs, or map SKUs to products, use onboard_map_skus.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): The products to change, at most 100 per call, each named by its product_id and the store_id of any one of its listings (from listings); each product at most once.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `catalog_abcd_classification` (~119 tokens)

The organisation's ABCD classification, as the app's Settings show it: whether the letters come from Flieber's calculated ranking or from custom letters, and the ranking's level, period and thresholds. Needs a Flieber sign-in.

Input parameters:

- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `catalog_abcd_classification_set` (~314 tokens)

Change the organisation's ABCD classification, as the app's Settings do: the source (calculated or custom) and, on the calculated source, the ranking's level, period and thresholds. Omitted fields keep their value. A commit changes the letters every product shows: a ranking change makes Flieber recalculate every tier in the background (a few minutes), a source change switches the letters at once. Reversible, except leaving custom while custom ABCD classification isn't enabled for the organisation: it can't come back to custom until Flieber enables it, and the preview warns (meta.warnings). Otherwise commit the previous values again (the preview lists them under changes); custom letters are kept while the source is calculated. No inventory forecast is recomputed. Preview first (commit=false), then commit with the preview_id. Needs a Flieber sign-in.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): Exactly one change.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `catalog_custom_tiers` (~265 tokens)

Every product × store with the ABCD letter it shows and Flieber's calculated letter, discontinued ones included, by product code, as the app's Set custom tiers grid loads them. Use it to find the product and store ids for catalog_custom_tiers_set, and with missing_tier for the ones without a letter yet. Needs a Flieber sign-in.

Input parameters:

- `missing_tier` (boolean): Only product-stores with no letter yet, on the custom source (the grid's pending filter). On the calculated source it narrows nothing.
- `page` (integer): The page, from 1; meta.next_page names the next one.
- `page_size` (integer): Rows per page (1–500; the app's grid loads 500).
- `product_ids` (array): Only these products (ids from `products` or `listings`).
- `store_ids` (array): Only these stores (ids from `listings`).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `catalog_custom_tiers_set` (~302 tokens)

Set or clear custom ABCD letters per product × store, as the app's Set custom tiers grid saves them; only while the ABCD classification source is custom (catalog_abcd_classification). A commit changes the letter those products show at once, for everyone in the organisation; a product-store not mapped to that store is rejected on its own. Reversible: commit the current_tier the preview showed, where current_tier_known is true; where it is false (a read cut short, said in meta.warnings) read the letter with catalog_custom_tiers first. No inventory forecast is recomputed. Preview first (commit=false), then commit with the preview_id. Needs a Flieber sign-in.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): The letters to set, at most 100 per call (one request), each product × store once.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `inventory_shipment_lookup` (~200 tokens)

One inbound shipment's lines, or every shipment with a code, with what the shipment writes act on: each line's item_id and index, and the shipment's code, internal code, provider, destination, delivery date, whether Flieber counts it, and its attributes. Needs a Flieber sign-in (an API key gets auth_missing).

Input parameters:

- `code`: Or a shipment code: every shipment with that code, compared trimmed and case-blind as Flieber compares codes.
- `page` (integer): The page of lines, 100 per page; meta.next_page names the next.
- `shipment_id`: One shipment's id.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `inventory_shipment_attributes` (~104 tokens)

The inbound shipment attributes in use: each name and value, with how many shipments have it. Needs a Flieber sign-in (an API key gets auth_missing).

Input parameters:

- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `inventory_shipments_settings` (~126 tokens)

How the organisation's inbound shipments come in: whether Flieber fills in new integration shipments' delivery dates, and whether manual shipments are kept in the app or in a Google Sheet (its email and link). Needs a Flieber sign-in (an API key gets auth_missing).

Input parameters:

- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `inventory_shipments_add` (~379 tokens)

Add manual inbound shipments, line by line, as the app's 'Add new' grid saves them: a SKU, units, the destination, and optionally the delivery date, a code and attributes. Lines with the same code and destination are one shipment; a line without a code is its own. The preview says which lines join an existing manual shipment with that internal code at that destination (whose delivery date and attributes they then set) or replace one of its lines, and which code an Amazon shipment has (with Amazon shipment code matching turned on for the organisation, such a line adjusts the Amazon shipment instead). A commit saves the lines; there is no undo (edit them with inventory_shipments_edit). Committing the same lines again is safe for lines with a code (they upsert onto the same shipment) but adds each line without a code again, as another shipment. Flieber then recomputes the inventory forecast in the background. Preview first (commit=false), then commit with the preview_id. Needs a Flieber sign-in (an API key gets auth_missing).

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): The lines to add: at most 3 different codes, and coded lines going to at most 3 destinations, per call.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `inventory_shipments_edit` (~309 tokens)

Change inbound shipment lines, as the app's 'Edit shipments' grid saves them: the SKU, units shipped or received, and the line's shipment's destination, delivery date, code, attributes and whether Flieber counts it (those apply to the whole shipment). A new destination moves the line to the shipment with the same code there; its other lines stay. On an integration line the app lets only some fields change (Amazon: destination, delivery date, counted; others: counted), and so does this. A commit replaces the lines; the preview's `changes` hold the values to restore by hand. Flieber then recomputes the inventory forecast in the background. Preview first (commit=false), then commit with the preview_id. Needs a Flieber sign-in (an API key gets auth_missing).

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): The lines to change, one per line.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `inventory_shipment_update` (~333 tokens)

Change one inbound shipment's code (manual shipments only), destination, delivery date or whether Flieber counts it, as the app's Inbound shipments list does. If the new code or destination is another shipment's (same code, destination and provider), Flieber moves that shipment's lines into this one and deletes it, which cannot be undone: the preview lists those shipments (action merge_and_delete), and a commit refuses to merge unless allow_merge is true. A plain change can be reversed with another update. Flieber then recomputes the inventory forecast in the background. Preview first (commit=false), then commit with the preview_id. Needs a Flieber sign-in (an API key gets auth_missing).

Input parameters:

- `allow_merge` (boolean): true: the commit may merge the shipments the preview lists (action merge_and_delete) into this one, which deletes them. false: a commit that would merge is refused and sends nothing. Ask the person f…
- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): Exactly one shipment.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `inventory_shipment_attributes_set` (~329 tokens)

Set attributes on inbound shipments, as the app's attributes dialog does: replace each shipment's attributes, or append to them. The preview shows each shipment's attributes before and after (to restore by hand); a Google Sheets shipment's are changed in its sheet. Attributes don't change Flieber's calculations. Preview first (commit=false), then commit with the preview_id. Needs a Flieber sign-in (an API key gets auth_missing).

Input parameters:

- `attributes` (object, required): Name to value, at most 10 per shipment; a name is 1 to 50 letters, digits, '_', '-' or '.', a value 1 to 100 characters. On the CLI, one JSON object.
- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): The shipments, one per item.
- `mode` (string, required): replace: each shipment's attributes become exactly `attributes` ({} removes them all). append: `attributes` are added to each shipment's own, a name it already has taking the new value.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `inventory_shipments_auto_delivery_date_set` (~239 tokens)

Turn on or off whether Flieber fills in the delivery date of each new integration shipment (its creation date plus the longest lead time of its SKUs), as the app's 'Turn auto-delivery date on/off' does. It applies to shipments that arrive afterwards; a date someone set is kept. Reversible: set it back. Preview first (commit=false), then commit with the preview_id. Needs a Flieber sign-in (an API key gets auth_missing).

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): Exactly one setting.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `inventory_shipments_input_set` (~255 tokens)

Choose where manual inbound shipments are kept, as the app's 'Configure inbound shipments input' does: in the app (manual) or in a Google Sheet Flieber creates and shares with an email. Switching back to manual moves the sheet to Google Drive's trash and keeps its shipments as manual ones; connecting again creates a new sheet, so the old one is not restored. In the app this needs a plan with Google Sheets. Preview first (commit=false), then commit with the preview_id. Needs a Flieber sign-in (an API key gets auth_missing).

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): Exactly one choice.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `forecast_review_flags` (~460 tokens)

The Demand Forecast review flags: places where the forecast is likely wrong, or needs something only you know, ranked by the units at stake, as the portal's Review tab lists them. By default the open flags; state dismissed or snoozed lists those instead, each with its dismissal. meta.summary covers every page of the open flags matching the filters, whatever the state: flag_count, units_at_stake, how many of the top flags cover cover_share (80%) of those units (items_covering_share), and when they were computed (computed_at). Needs a Flieber sign-in.

Input parameters:

- `checks` (array): Only these checks. Known checks: starting_level, monthly_outliers, near_zero, far_from_reference, growth_vs_expected, outside_model_range (likely wrong); new_product, started_partway, recent_stockout…
- `kinds` (array): Only these kinds: likely_wrong (the evidence contradicts the forecast; each has a suggested fix) or needs_knowledge (something only the seller knows).
- `page` (integer): The page, from 1; meta.next_page names the next one.
- `page_size` (integer): Flags per page (1–100; the portal shows 50).
- `product_ids` (array): Only these products (ids from `products` or `listings`).
- `state` (string): Which flags: open (default: neither dismissed nor snoozed; a snooze whose until has passed is open again), dismissed (dismissed for good) or snoozed (until still ahead). Dismissed and snoozed rows ca…
- `store_ids` (array): Only these stores (ids from `listings`).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `forecast_review_flag_dismiss` (~302 tokens)

Dismiss Demand Forecast review flags for good, or snooze them until a moment (until), as the portal's Review tab does. A commit hides each flag from forecast_review_flags, across rebuilds, for the whole organisation; it changes no forecast number. A dismissal stays and a snooze ends when until passes, unless forecast_review_flag_restore brings the flag back; dismissing the same flag again replaces its reason and until. Name each flag by its check, product_id and store_id exactly as forecast_review_flags gave them. Preview first (commit=false), then commit with the preview_id. Needs a Flieber sign-in.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): The flags to dismiss or snooze, at most 6 per call (one request each), each named by its check, product_id and store_id exactly as forecast_review_flags gave them.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `forecast_review_flag_restore` (~320 tokens)

Bring back dismissed or snoozed Demand Forecast review flags, as the portal's Review tab does: a commit deletes each flag's dismissal or snooze, so forecast_review_flags lists it as open again (for the whole organisation). The dismissal's reason and who made it are not kept. A key with no dismissal or snooze (an open flag, or no such flag) is no error: its row says not_dismissed and nothing changes. Name each flag by its check, product_id and store_id exactly as forecast_review_flags (state dismissed or snoozed) gave them. Preview first (commit=false), then commit with the preview_id. Needs a Flieber sign-in.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): The flags to bring back, at most 6 per call (one request each), each named by its check, product_id and store_id exactly as forecast_review_flags (state dismissed or snoozed) gave them.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `forecast_past_adjustments` (~345 tokens)

Past adjustments: one product-store's daily corrections to its adjusted sales (the history the forecast learns from), as the portal's Demand Forecast lists them: the units a person set for a day (manual_quantity) and Flieber's recommended units (recommended_quantity), latest day first. Default: from the 1st of the month 12 months back to yesterday. Only active products are listed (Flieber's default, as in the portal): a discontinued product's days are not shown. A day given back to Flieber may still be listed, with both quantities null. Needs a Flieber sign-in. For the adjusted sales series itself use `adjusted`; to change days use `forecast_past_adjustment_set`.

Input parameters:

- `end`: Last day, YYYY-MM-DD (UTC), included. Default: yesterday.
- `page` (integer): The page, from 1; meta.next_page names the next one.
- `page_size` (integer): Days per page.
- `product_id` (string, required): The product's id (from products or listings).
- `start`: First day, YYYY-MM-DD (UTC), included. Default: the 1st of the month 12 months before this one, as the portal shows.
- `store_id` (string, required): The store's id: the selling account the product is sold in (from listings).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `forecast_past_adjustment_set` (~339 tokens)

Set days of one product-store's adjusted sales to a number of units (for example a stockout or a one-off order), or restore Flieber's value for them, as the portal's Demand Forecast "Fix the sales history" does. A commit replaces each day's previous value and Flieber recalculates the product-store's forecast before it answers; the inventory forecast is then recalculated in the background, so its reads may show old numbers for a few minutes. The previous value is not kept: read it first with `forecast_past_adjustments` if it may need to be put back. Preview first (commit=false), then commit with the preview_id. Needs a Flieber sign-in.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): The days to set or restore, one item per day, for this one product-store.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `product_id` (string, required): The product's id (from products or listings).
- `store_id` (string, required): The store's id: the selling account the product is sold in (from listings).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `forecast_listing_models` (~225 tokens)

The Demand Forecast's backtest per listing (product × store), as the portal reads it: the plan model in use (seasonal, top_down, naive or last_year) and why, the listing's most adherent model, and the accuracy light of the model in use (good, watch, bad, not_enough_data), largest scored units first, 100 per page. A listing the nightly backtest has not scored has no row. Needs a Flieber sign-in.

Input parameters:

- `page` (integer): The page of 100 listings, from 1; meta.next_page names the next one.
- `product_ids`: Only these product ids (from `listings`).
- `store_ids`: Only these store ids (from `listings`).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `forecast_model_switch` (~455 tokens)

Switch the Flieber forecast model (ai, moving_average or last_years_sales) and growth of listings, as the portal's Demand Forecast "Switch model" does: one model, growth and weights for every listing named, in one request. A commit pins each listing's own model, growth and weights, replacing what it had, and recomputes their forecast: before the answer for up to 25 listings, in the background above that; the inventory forecast follows in the background. It can't be undone here: this tool can't return a listing to following the organisation's default model, and the listing's current growth and weights can't be read here to switch back to (trends shows each listing's model name only). Preview first (commit=false), then commit with the preview_id. Needs a Flieber sign-in.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `growth_percent` (number, required): Growth applied to the forecast, in % (5 is +5%, 0 for none), at most 2 decimals. Required: one value goes to every listing of the call, replacing each one's growth.
- `items` (array, required): The listings (product × store) to switch, all in one request. At most 100 per call.
- `last_years_sales`: With model last_years_sales only: its weights.
- `model` (string, required): The Flieber forecast model: ai (Flieber AI), moving_average (needs moving_average) or last_years_sales (needs last_years_sales). custom is not offered: it needs an uploaded forecast.
- `moving_average`: With model moving_average only: its weights and seasonality.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `onboard_state` (~184 tokens)

Onboarding status of the signed-in user's selected organisation: whether it is live and, for an organisation with the app's steps, whether finishing is allowed now and what blocks it, as Flieber reports (flieber derives no steps). An organisation created through flieber or the portal (products include portal) has no setup steps: by default it goes live automatically after a save that leaves the setup complete (a store and a mapped listing), never on a read; that save's preview says it may, and its result says it did. Needs a Flieber sign-in.

Input parameters:

- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `onboard_list_stores` (~85 tokens)

The organisation's stores (selling accounts) with their connection and provider.

Input parameters:

- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `onboard_start_connection` (~285 tokens)

Start connecting a store: for amazon, ebay and etsy, the consent URL the user opens in a browser; for walmart, bigcommerce, woocommerce, bol, shopify and the assisted-setup systems (netsuite, 3PLs, ...), where to connect instead. Nothing is saved until the user consents; then onboard_connection_status shows the new connection.

Input parameters:

- `account_type`: Amazon only: seller (default) or vendor.
- `provider` (string, required): amazon, ebay or etsy open a consent URL in the browser; walmart, bigcommerce, woocommerce and bol (Bol.com) point to the portal's /connect (their credentials never pass through flieber); shopify poin…
- `seller_central_region`: Amazon only: NA, EU, AU, SG or JP (a vendor account uses a country).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `onboard_connection_status` (~84 tokens)

The organisation's store connections and how far each one's import has got.

Input parameters:

- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `onboard_create_store` (~242 tokens)

Create one store (a selling account) on a connection or a Google Sheet. A name that exists is refused, so repeating a commit whose outcome is unknown cannot duplicate it. Preview with commit=false, then commit=true with the same arguments, preview_id and upstream_preview_id.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): Exactly one store.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…
- `upstream_preview_id`: From the preview's meta.upstream_preview_id: send it back unchanged with commit=true (null when the preview had none). It is bound into preview_id, so an edited value is preview_mismatch.

### `onboard_list_skus` (~154 tokens)

One page of a store's SKUs and the product each maps to (unmapped by default), with a suggested product code when Flieber has one.

Input parameters:

- `page` (integer): The page, from 1; meta.next_page names the next one.
- `status` (string): unmapped (default), mapped or all.
- `store_id` (string, required): The store (from onboard_list_stores).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `onboard_map_skus` (~521 tokens)

Add products and SKUs to a store, or map, move or clear SKUs, at any time, not only during onboarding, as the app's Map SKUs page and AI Lab's Add or map SKUs upload do: an upsert per SKU; a new product code creates the product, and existing product names are kept. A store holds one mapping per SKU, so mapping a SKU that is on another product moves it. Clear a mapping with clear: true (the SKU keeps its archived flag), archive with archive: true (unmaps the SKU and leaves it out of counts and forecasts; this is not Discontinued and not Sell-through), or unarchive with archive: false (only a SKU that is archived now, and it stays unmapped; do not send is_archived with a product code). Each commit makes Flieber tidy the organisation's catalog: it deletes a listing left with no SKU, with its chosen status, backorders, attributes and tier, and keeps only the newest of two mappings of one SKU. The preview shows, per row, the product the SKU is on now (current_product_code) and whether the row removes that product's listing (removes_listing). Preview with commit=false, then commit=true with the same arguments, preview_id and upstream_preview_id.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): SKU → product rows (or clear rows). At most 100 per call on the MCP surfaces; the CLI's `onboard skus map` sends batches of up to 500. Invalid rows block the whole call: fix or drop them, then previe…
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `store_id` (string, required): The store whose SKUs these are (from onboard_list_stores).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…
- `upstream_preview_id`: From the preview's meta.upstream_preview_id: send it back unchanged with commit=true (null when the preview had none). It is bound into preview_id, so an edited value is preview_mismatch.

### `onboard_list_locations` (~83 tokens)

The organisation's inventory locations and the provider locations each stands for.

Input parameters:

- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `onboard_create_location` (~231 tokens)

Create one inventory location. A name that exists is refused, so repeating a commit whose outcome is unknown cannot duplicate it. Preview with commit=false, then commit=true with the same arguments, preview_id and upstream_preview_id.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): Exactly one location.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…
- `upstream_preview_id`: From the preview's meta.upstream_preview_id: send it back unchanged with commit=true (null when the preview had none). It is bound into preview_id, so an edited value is preview_mismatch.

### `onboard_update_location` (~219 tokens)

Change one inventory location; omitted fields stay as they are. Preview with commit=false, then commit=true with the same arguments, preview_id and upstream_preview_id.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): Exactly one update.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…
- `upstream_preview_id`: From the preview's meta.upstream_preview_id: send it back unchanged with commit=true (null when the preview had none). It is bound into preview_id, so an edited value is preview_mismatch.

### `onboard_link_store_location` (~231 tokens)

Set each store's fulfillment and storage locations: an id sets it, null clears it, omitted keeps it. Preview with commit=false, then commit=true with the same arguments, preview_id and upstream_preview_id.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): One row per store.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…
- `upstream_preview_id`: From the preview's meta.upstream_preview_id: send it back unchanged with commit=true (null when the preview had none). It is bound into preview_id, so an edited value is preview_mismatch.

### `onboard_finish` (~278 tokens)

Finish setup: IRREVERSIBLE, it sets the organisation live. Run onboard_state first; confirm with the user before committing. A no-op once the organisation is live. An organisation created through flieber or the portal does not need it by default: it goes live automatically after a save that leaves the setup complete. Preview with commit=false, then commit=true with the same arguments, preview_id and upstream_preview_id.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): Exactly one empty object: [{}]. finish takes no fields.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…
- `upstream_preview_id`: From the preview's meta.upstream_preview_id: send it back unchanged with commit=true (null when the preview had none). It is bound into preview_id, so an edited value is preview_mismatch.

### `onboard_delete_store` (~345 tokens)

Delete one store (a selling account), IRREVERSIBLE: show the preview, ask the person to type the store's exact name, and commit with what they typed as confirm_name. Its SKU mappings, daily sales and forecast go with it; its orders, products and connection stay. The preview's warnings name the store and what goes. A missing or different confirm_name deletes nothing; a repeated commit is refused (the store no longer exists). Preview with commit=false, then commit=true with the same arguments, preview_id and upstream_preview_id.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `confirm_name`: commit=true only, and required then: the store's exact name as the person typed it after seeing the preview. Ask them to type it; never fill it in yourself. A different or missing name deletes nothin…
- `items` (array, required): Exactly one store.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…
- `upstream_preview_id`: From the preview's meta.upstream_preview_id: send it back unchanged with commit=true (null when the preview had none). It is bound into preview_id, so an edited value is preview_mismatch.

### `onboard_automap` (~94 tokens)

The organisation's SKU automap strategy: how new listings are mapped to products on their own, if at all.

Input parameters:

- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `onboard_set_automap` (~252 tokens)

Set the organisation's SKU automap strategy, keeping its other settings. Turning it on starts mapping the unmapped listings right away; turning it off later does not undo those mappings. A custom rule is not replaced. Preview with commit=false, then commit=true with the same arguments, preview_id and upstream_preview_id.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): Exactly one strategy.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…
- `upstream_preview_id`: From the preview's meta.upstream_preview_id: send it back unchanged with commit=true (null when the preview had none). It is bound into preview_id, so an edited value is preview_mismatch.

### `onboard_list_connection_requests` (~113 tokens)

The organisation's assisted-connection requests (systems Flieber connects for you) and their status. A request is filed in the portal (onboard_start_connection points there), because it carries the provider's credentials.

Input parameters:

- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `onboard_enable_product` (~254 tokens)

Enable the Flieber portal (the self-serve product) on the selected, existing organisation: its connections, stores and mapping carry over. Organisation admins only; Flieber refuses anyone else. A no-op when it is already enabled. Preview with commit=false, then commit=true with the same arguments, preview_id and upstream_preview_id.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): Exactly one product.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…
- `upstream_preview_id`: From the preview's meta.upstream_preview_id: send it back unchanged with commit=true (null when the preview had none). It is bound into preview_id, so an edited value is preview_mismatch.

### `onboard_update_store` (~313 tokens)

Change one store (a selling account) as the app's Edit store dialog does: its name, region or wholesale flag; a field left out stays as it is. A commit changes only those fields (flieber sends the whole record, the other fields unchanged); change it back to undo it. Changing the wholesale flag queues a forecast rebuild for the store (asynchronous: forecast reads show it once the rebuild finishes; a wholesale store's sales history is not cleaned of outliers). A repeated commit sets the same values again. Preview with commit=false, then commit=true with the same arguments, preview_id and upstream_preview_id.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): Exactly one store.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…
- `upstream_preview_id`: From the preview's meta.upstream_preview_id: send it back unchanged with commit=true (null when the preview had none). It is bound into preview_id, so an edited value is preview_mismatch.

### `onboard_withdraw_connection_request` (~392 tokens)

Withdraw one open assisted-connection request (a system the Flieber team is connecting for you), as the app's Integrations page does: the request is deleted and the team stops setting it up. It cannot be undone: to connect that system later, file a new request in the portal, which takes its credentials again (flieber never handles them). A completed request is refused, and so is a repeated commit (the request no longer exists). Only with `--mode rest` for now: by default onboarding goes through Flieber's onboarding service, which does not offer this yet, so it is refused with nothing sent. `flieber onboard --mode rest`, or the environment variable FLIEBER_ONBOARDING_MODE=rest (it sets the default for the CLI and the local MCP server), sends onboarding to the Flieber app's own API instead, and runs it. Not on the hosted server. Preview with commit=false, then commit=true with the same arguments, preview_id and upstream_preview_id.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): Exactly one request.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…
- `upstream_preview_id`: From the preview's meta.upstream_preview_id: send it back unchanged with commit=true (null when the preview had none). It is bound into preview_id, so an edited value is preview_mismatch.

### `onboard_list_alert_snoozes` (~201 tokens)

Your active snoozes of the alerts about disconnected stores (a snooze is the signed-in user's own): the connection, until when, and when its outage began. Only with `--mode rest` for now: by default onboarding goes through Flieber's onboarding service, which does not offer this yet, so it is refused with nothing sent. `flieber onboard --mode rest`, or the environment variable FLIEBER_ONBOARDING_MODE=rest (it sets the default for the CLI and the local MCP server), sends onboarding to the Flieber app's own API instead, and runs it. Not on the hosted server.

Input parameters:

- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `onboard_snooze_alerts` (~438 tokens)

Snooze the alerts about disconnected stores only for you (the signed-in user), for 3_days, 7_days or until_reconnected, as the app's disconnected-store banner does. Only a connection that is disconnected now can be snoozed (onboard_connection_status: disconnected or access_denied); the others are refused. The stores still show as disconnected and nothing else changes. Snoozing again replaces the end; onboard_unsnooze_alerts shows the alerts again. Only with `--mode rest` for now: by default onboarding goes through Flieber's onboarding service, which does not offer this yet, so it is refused with nothing sent. `flieber onboard --mode rest`, or the environment variable FLIEBER_ONBOARDING_MODE=rest (it sets the default for the CLI and the local MCP server), sends onboarding to the Flieber app's own API instead, and runs it. Not on the hosted server. Preview with commit=false, then commit=true with the same arguments, preview_id and upstream_preview_id.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `duration` (string, required): 3_days, 7_days, or until_reconnected (until the store is reconnected).
- `items` (array, required): The connections whose alerts to snooze, each once (at most 100).
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…
- `upstream_preview_id`: From the preview's meta.upstream_preview_id: send it back unchanged with commit=true (null when the preview had none). It is bound into preview_id, so an edited value is preview_mismatch.

### `onboard_unsnooze_alerts` (~346 tokens)

Show the alerts about one disconnected store again, for you: removes your snooze of that connection, as the app's 'Show alerts again now' does. A no-op when it is not snoozed. Only with `--mode rest` for now: by default onboarding goes through Flieber's onboarding service, which does not offer this yet, so it is refused with nothing sent. `flieber onboard --mode rest`, or the environment variable FLIEBER_ONBOARDING_MODE=rest (it sets the default for the CLI and the local MCP server), sends onboarding to the Flieber app's own API instead, and runs it. Not on the hosted server. Preview with commit=false, then commit=true with the same arguments, preview_id and upstream_preview_id.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): Exactly one connection.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…
- `upstream_preview_id`: From the preview's meta.upstream_preview_id: send it back unchanged with commit=true (null when the preview had none). It is bound into preview_id, so an edited value is preview_mismatch.

### `onboard_rename_connection` (~302 tokens)

Rename one store connection: the name it shows under in Flieber, as the portal's Connect page does. Only the name changes: its stores, imports and data stay; rename it back to undo it. The name is trimmed, 1 to 100 characters, and need not be unique; the current name is refused, so a repeated commit is refused rather than applied twice (after an unknown outcome, that refusal means the rename went through). Preview with commit=false, then commit=true with the same arguments, preview_id and upstream_preview_id.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): Exactly one connection and its new name.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…
- `upstream_preview_id`: From the preview's meta.upstream_preview_id: send it back unchanged with commit=true (null when the preview had none). It is bound into preview_id, so an edited value is preview_mismatch.

### `sign_in_start` (~109 tokens)

Start signing in to Flieber when this MCP server runs where the person's browser is not (a remote sandbox): returns a link for the person to open on their own device. Local MCP only.

Input parameters:

- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `sign_in_finish` (~185 tokens)

Finish the sign-in `sign_in_start` began, with the one-time code the person pasted from the Flieber sign-in page. Paste the code only into the terminal or agent you started this sign-in from: it signs that one in as you. It replaces this machine's stored flieber sign-in for this environment, as `flieber login` does. Local MCP only.

Input parameters:

- `code` (string, required): The whole one-time code the Flieber sign-in page showed the person, exactly as they pasted it to you (it has a `.` near the end).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `subscription_status` (~117 tokens)

The organisation's current plan as Flieber bills it: plan name, status (trialing, active, paused, …), trial end and whether a payment method is on file, with the next step. Needs a Flieber sign-in.

Input parameters:

- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `subscription_page` (~119 tokens)

The Flieber app's subscription page for the organisation, to add a payment method, pick a plan or reactivate it. The CLI opens it in the browser; on the MCP, give the person the link. Needs a Flieber sign-in.

Input parameters:

- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `inventory_forecast` (~551 tokens)

The inventory forecast per product × location, as the portal's Inventory forecast list shows it: status (replenish now, soon, healthy, overstock), what to order and by when, stock on hand and in transit, days of stock, the last day of stock, lead times and the supplier. Best sellers first unless `ordering` says otherwise; meta.total counts every matching row (the portal's status cards are this count with `inventory_statuses`). Needs a Flieber sign-in.

Input parameters:

- `ideal_order_date_after`: Order-by date from (YYYY-MM-DD).
- `ideal_order_date_before`: Order-by date until.
- `include`: Extra output per row, null unless named here: projection (the daily projected units, as inventory_projection has them) and trends (adjusted sales and forecast over every window). The portal asks for…
- `inventory_locations`: Inventory locations. Ids, any of them (repeat the option on the CLI).
- `inventory_statuses`: Any of: problem (stockout before the next possible delivery), risky (below safety stock then), replenish_soon, covered, overstock. The portal's 'Replenish now' is problem and risky.
- `ordering`: Sort fields in order, each by Flieber's field name; prefix one with - for descending, e.g. total_days_of_stock or -next_30_days_quantity. An unknown field is refused.
- `origin_inventory_locations`: Rows replenished by transfer from these locations. Ids, any of them (repeat the option on the CLI).
- `origin_suppliers`: Rows replenished by purchase from these suppliers. Ids, any of them (repeat the option on the CLI).
- `page` (integer): The page, from 1; meta.next_page names the next one.
- `page_size` (integer): Rows per page (1–100; default 50).
- `possible_order_date_after`: Earliest possible order date from.
- `possible_order_date_before`: Earliest possible order date until.
- `product_ids`: Products. Ids, any of them (repeat the option on the CLI).
- `replenishment_type`: purchase, transfer, or both.
- `search`: Matches the product's name or code.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…
- `tiers`: Product tiers.

### `inventory_projection` (~142 tokens)

One product at one location, day by day: the projected units on hand and in transit, and the days inbound shipments arrive (the portal's inventory projection chart). Needs a Flieber sign-in.

Input parameters:

- `location_id` (string, required): The inventory location (from inventory_forecast).
- `product_id` (string, required): The product (from inventory_forecast or products).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `inventory_demand` (~163 tokens)

One product at one location, day by day: the demand Flieber's inventory forecast plans for there, the units fulfilled, lost and backordered (the portal's demand chart in the product drawer). No rows when Flieber has no calculation details for the pair. Needs a Flieber sign-in.

Input parameters:

- `location_id` (string, required): The inventory location (from inventory_forecast).
- `product_id` (string, required): The product (from inventory_forecast or products).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `inventory_totals` (~348 tokens)

Totals over every product × location the filters match: units and value on hand and in transit, stockouts, replenishment needs and gross profit, in USD. Needs a Flieber sign-in.

Input parameters:

- `ideal_order_date_after`: Order-by date from (YYYY-MM-DD).
- `ideal_order_date_before`: Order-by date until.
- `inventory_locations`: Inventory locations. Ids, any of them (repeat the option on the CLI).
- `inventory_statuses`: Any of: problem (stockout before the next possible delivery), risky (below safety stock then), replenish_soon, covered, overstock. The portal's 'Replenish now' is problem and risky.
- `origin_inventory_locations`: Rows replenished by transfer from these locations. Ids, any of them (repeat the option on the CLI).
- `origin_suppliers`: Rows replenished by purchase from these suppliers. Ids, any of them (repeat the option on the CLI).
- `possible_order_date_after`: Earliest possible order date from.
- `possible_order_date_before`: Earliest possible order date until.
- `product_ids`: Products. Ids, any of them (repeat the option on the CLI).
- `replenishment_type`: purchase, transfer, or both.
- `search`: Matches the product's name or code.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…
- `tiers`: Product tiers.

### `inventory_replenishment` (~535 tokens)

How much to order or move for each product × location so stock lasts until `cover_until`, computed by Flieber for that window (the portal's 'cover until'). It computes only: nothing is saved or ordered. Needs a Flieber sign-in.

Input parameters:

- `cover_from`: The first day to cover; today (UTC) when omitted, as in the portal.
- `cover_until` (string, required): The last day the replenishment must cover (YYYY-MM-DD), within 365 days of today: the portal's 'cover until'.
- `ideal_order_date_after`: Order-by date from (YYYY-MM-DD).
- `ideal_order_date_before`: Order-by date until.
- `inventory_locations`: Inventory locations. Ids, any of them (repeat the option on the CLI).
- `inventory_statuses`: Any of: problem (stockout before the next possible delivery), risky (below safety stock then), replenish_soon, covered, overstock. The portal's 'Replenish now' is problem and risky.
- `ordering`: Sort fields in order, each by Flieber's field name; prefix one with - for descending, e.g. -replenishment_needs. An unknown field is refused.
- `origin_inventory_locations`: Rows replenished by transfer from these locations. Ids, any of them (repeat the option on the CLI).
- `origin_suppliers`: Rows replenished by purchase from these suppliers. Ids, any of them (repeat the option on the CLI).
- `page` (integer): The page, from 1; meta.next_page names the next one.
- `page_size` (integer): Rows per page (1–100; default 50).
- `pairs`: Only these product × location pairs, each {product_id, location_id}.
- `possible_order_date_after`: Earliest possible order date from.
- `possible_order_date_before`: Earliest possible order date until.
- `product_ids`: Products. Ids, any of them (repeat the option on the CLI).
- `replenishment_type`: purchase, transfer, or both.
- `search`: Matches the product's name or code.
- `target_shipment_departure`: When the shipment would leave its origin, if known.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…
- `tiers`: Product tiers.

### `inventory_shipments` (~366 tokens)

Inbound shipments with their lines: destination, delivery date, status, units shipped, received and pending. Closed shipments and those left out of Flieber's calculations are hidden unless asked for. Needs a Flieber sign-in.

Input parameters:

- `destination_location_id`: Destinations. Ids, any of them (repeat the option on the CLI).
- `flieber_phases`: Provider statuses, e.g. WORKING, SHIPPED, IN_TRANSIT, RECEIVING.
- `include_closed_status`: Include closed shipments; Flieber leaves them out by default.
- `include_disconsidered_in_calculations`: Include shipments excluded from Flieber's calculations.
- `is_undelivered_with_past_date`: Only shipments whose delivery date passed with nothing accepted (or only the others).
- `ordering`: Sort fields in order, each by Flieber's field name; prefix one with - for descending, e.g. -delivery_date. An unknown field is refused.
- `page` (integer): The page, from 1; meta.next_page names the next one.
- `page_size` (integer): Rows per page (1–100; default 50).
- `search`: Shipment code, line SKUs, product codes and names.
- `shipment_delivery_date_after`: Delivery date from: YYYY-MM-DD, or Flieber's relative words (today, next_week, …).
- `shipment_delivery_date_before`: Delivery date until; as above.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `inventory_shipments_summary` (~119 tokens)

Counts of the organisation's inbound shipments that need attention: past their delivery date, missing a date or a destination, or with SKUs not mapped to products. No row when there is no shipment yet. Needs a Flieber sign-in.

Input parameters:

- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `inventory_shipment_items` (~317 tokens)

Inbound shipment lines, one per SKU on a shipment, with the product it maps to and its shipment (e.g. a product's open lines: `product_ids`). Needs a Flieber sign-in.

Input parameters:

- `destination_location_id`: Destinations. Ids, any of them (repeat the option on the CLI).
- `include_disconsidered_in_calculations`: Include lines excluded from Flieber's calculations (left out by default).
- `ordering`: Sort fields in order, each by Flieber's field name; prefix one with - for descending, e.g. shipment_delivery_date. An unknown field is refused.
- `page` (integer): The page, from 1; meta.next_page names the next one.
- `page_size` (integer): Rows per page (1–100; default 100).
- `product_ids`: Products. Ids, any of them (repeat the option on the CLI).
- `search`: Shipment code, SKU, product code or name.
- `shipment_delivery_date_after`: Delivery date from.
- `shipment_delivery_date_before`: Delivery date until.
- `shipment_ids`: Shipments. Ids, any of them (repeat the option on the CLI).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `inventory_product_suppliers` (~211 tokens)

Each product's supplier and supply facts: MOQ, production lead time, purchase cost, carton and pallet. Needs a Flieber sign-in.

Input parameters:

- `is_active`: true: products not discontinued only; false: discontinued only.
- `page` (integer): The page, from 1; meta.next_page names the next one.
- `page_size` (integer): Rows per page (1–100; default 100).
- `product_ids`: Products. Ids, any of them (repeat the option on the CLI).
- `search`: Product code or name, or supplier name.
- `supplier_ids`: Suppliers. Ids, any of them (repeat the option on the CLI).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `inventory_lead_times` (~146 tokens)

Shipment lead times, one row per origin (supplier or location) and destination location. A page holds up to `page_size` origins. Needs a Flieber sign-in.

Input parameters:

- `page` (integer): The page, from 1; meta.next_page names the next one.
- `page_size` (integer): Rows per page (1–100; default 100).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `inventory_store_settings` (~132 tokens)

Which inventory location fulfils each store's orders and which stores for it. Needs a Flieber sign-in.

Input parameters:

- `page` (integer): The page, from 1; meta.next_page names the next one.
- `page_size` (integer): Rows per page (1–100; default 100).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `inventory_locations` (~143 tokens)

The organisation's inventory locations (warehouses, Amazon FBA and other fulfilment centres), as the portal's location filter lists them. Needs a Flieber sign-in.

Input parameters:

- `page` (integer): The page, from 1; meta.next_page names the next one.
- `page_size` (integer): Rows per page (1–100; default 100).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `inventory_product_supplier_set` (~379 tokens)

Set a product's supplier and supply facts (MOQ, production lead time, purchase cost in USD, carton and pallet), as the Flieber app's Edit suppliers page saves them. Each item names the fields to set or clear; the others keep their value. The supplier is named: an existing supplier with exactly that name, else Flieber creates one, and a supplier no product uses any more is deleted with its shipment lead times; changing a product's supplier can also remove the old supplier's lead times on routes no longer in use. The preview shows each change, whether the supplier exists, and those deletions. A commit replaces the products' rows: to undo, set the previous values again (the preview's `changes` lists them); a deleted supplier's lead times must be set again. The carton fields and cartons_per_pallet need the app's carton editing for the organisation. After a commit, Flieber recalculates the inventory forecast in the background; inventory_product_suppliers shows the saved rows (it needs the portal's Inventory Forecast section). Preview first (commit=false), then commit with the preview_id. Needs a Flieber sign-in.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): One item per product, each product once.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `inventory_lead_time_set` (~340 tokens)

Set the shipment lead time of origin → destination routes (from a supplier, or a transfer from another inventory location), as the Flieber app's Edit shipment lead times page saves them. Only the routes named change. As in the app, a route not in use or from a location to itself can't be set. Clearing a route in use follows the organisation's page: refused where it is the newer Edit shipment lead times page or the page can't be confirmed, allowed elsewhere (the app then shows the route as pending configuration). A commit replaces each route's lead time: to undo, send the preview's lead_time_days_before again (clear when it was null, where the page allows it). After a commit, Flieber recalculates the inventory forecast in the background; inventory_lead_times shows the saved routes (it needs the portal's Inventory Forecast section). Preview first (commit=false), then commit with the preview_id. Needs a Flieber sign-in.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): One item per route, each route once.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `inventory_balance` (~325 tokens)

The inventory balance per product, as the app's Inventory balance page shows it: units on hand and on order across the product's supply-chain locations, their value at purchase cost, and the units at each location. Active products unless asked otherwise. Needs a Flieber sign-in.

Input parameters:

- `currency` (string): Currency of the cost columns.
- `include_discontinued_products` (boolean): Include discontinued products (Flieber shows active ones only).
- `is_new`: Only products added within the organisation's new-product window (true), or only older ones (false). true also includes discontinued ones, as in the catalog. Only where the app shows its New products…
- `location_ids`: Only products supplied to these inventory locations. Ids, any of them (repeat the option on the CLI).
- `page` (integer): The page, from 1; meta.next_page names the next one.
- `page_size` (integer): Rows per page (1–100; default 100, as the app).
- `product_ids`: Products. Ids, any of them (repeat the option on the CLI).
- `search`: Matches the product's code or name, or a SKU.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `inventory_balance_by_sku` (~350 tokens)

The inventory balance per SKU (the app's 'View by SKU'): the units of each SKU on hand and on order at each inventory location, with the product it maps to. Needs a Flieber sign-in.

Input parameters:

- `currency` (string): Currency of the cost columns.
- `include_discontinued_products` (boolean): Include discontinued products (Flieber shows active ones only).
- `is_new`: Only products added within the organisation's new-product window (true), or only older ones (false). true also includes discontinued ones, as in the catalog. Only where the app shows its New products…
- `location_ids`: Only products supplied to these inventory locations. Ids, any of them (repeat the option on the CLI).
- `ordering`: Sort fields in order (product_code, product_name, sku); prefix one with - for descending. Default: by SKU. An unknown field is refused.
- `page` (integer): The page, from 1; meta.next_page names the next one.
- `page_size` (integer): Rows per page (1–100; default 100, as the app).
- `product_ids`: Products. Ids, any of them (repeat the option on the CLI).
- `search`: Matches the product's code or name, or a SKU.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `inventory_balance_totals` (~272 tokens)

Totals of the inventory balance over every product the filters match, and per inventory location: units on hand and on order, and their value at purchase cost (the app's totals row). Needs a Flieber sign-in.

Input parameters:

- `currency` (string): Currency of the cost columns.
- `include_discontinued_products` (boolean): Include discontinued products (Flieber shows active ones only).
- `is_new`: Only products added within the organisation's new-product window (true), or only older ones (false). true also includes discontinued ones, as in the catalog. Only where the app shows its New products…
- `location_ids`: Only products supplied to these inventory locations. Ids, any of them (repeat the option on the CLI).
- `product_ids`: Products. Ids, any of them (repeat the option on the CLI).
- `search`: Matches the product's code or name, or a SKU.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `inventory_history` (~314 tokens)

Inventory history by month (the app's Inventory history chart): units on hand and on order at the start and end of each month, monthly averages, days of stock and stockout days, summed over the products and locations the filters match. Default: from a year ago to today, so 13 calendar months (the current one and the 12 before it), as the app's default period. Needs a Flieber sign-in.

Input parameters:

- `end_date`: The last day (YYYY-MM-DD); its whole month is counted. Default: today.
- `include_discontinued_products` (boolean): Include discontinued products (Flieber shows active ones only).
- `inventory_locations`: Inventory locations. Ids, any of them (repeat the option on the CLI).
- `pairs`: Only these product × location rows (the app's rows selected in the ledger).
- `product_status`: Product statuses at the location: active, sell_through, discontinued. Choosing discontinued includes discontinued products.
- `search`: Matches the product's code or name, or a SKU.
- `start_date`: The first day (YYYY-MM-DD); its whole month is counted. Default: a year ago. Flieber keeps about a year.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `inventory_history_trends` (~383 tokens)

Inventory history per product × location over the current month and the 12 before it (the app's Inventory history table), one measure per call: units on hand or on order at the end or start of each month, the monthly average, or days of stock. Needs a Flieber sign-in.

Input parameters:

- `include_discontinued_products` (boolean): Include discontinued products (Flieber shows active ones only).
- `inventory_locations`: Inventory locations. Ids, any of them (repeat the option on the CLI).
- `measure` (string): What each month column holds: on_hand_end / on_hand_start (units on hand at the end or start of the month), on_order_end / on_order_start (units on order), on_hand_monthly_average / on_order_monthly_…
- `ordering`: Sort fields in order, each by Flieber's field name (product_code, location_name, or <month>_<field> such as previous_1_month_units_quantity_end); prefix one with - for descending. Default: by product…
- `page` (integer): The page, from 1; meta.next_page names the next one.
- `page_size` (integer): Rows per page (1–100; default 100, as the app).
- `product_status`: Product statuses at the location: active, sell_through, discontinued. Choosing discontinued includes discontinued products.
- `search`: Matches the product's code or name, or a SKU.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `replenishment_plan_create` (~293 tokens)

Create a replenishment plan (purchase or transfer), as the Flieber app does from the inventory forecast: a snapshot of the order units the scope's lines need over the coverage period. The preview (commit=false) writes nothing: it checks the scope against the supply chain, reports the purchase/transfer collisions and how many lines and units the plan would take. A commit creates the plan (Flieber names it 'Replenishment Simulation <date time>') and saves a draft, as the app's Save. Not idempotent: each commit creates another plan. It can be undone only by deleting the plan in the app. It changes no inventory forecast number and starts no recompute: a plan is a snapshot. Needs a Flieber sign-in.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): Exactly one plan.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `replenishment_plan_edit` (~291 tokens)

Edit a replenishment plan as the app's plan editor does: order units per line, the coverage period (and a transfer's departure), round every order up to whole cartons, reset every order to the computed needs, or save a draft (complete). The preview (commit=false) shows each change before and after and writes nothing. A commit changes the plan's lines and settings only. It is not undone by flieber: set the old values again (the preview shows them); round_to_cartons and use_replenishment_needs replace every order set by hand. A plan converted to shipments is not edited. It changes no inventory forecast number and starts no recompute: a plan is a snapshot. Needs a Flieber sign-in.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): Exactly one plan edit.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `replenishment_plan_rename` (~200 tokens)

Rename a replenishment plan, or change its comments, as the app's name and comments dialogs do. The preview (commit=false) shows the name and comments before and after and writes nothing. A commit changes only those; rename it back to undo. Needs a Flieber sign-in.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): Exactly one plan.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `replenishment_plan_refresh` (~256 tokens)

Refresh a replenishment plan from the latest inventory forecast, as the app's refresh does: its lines are taken again for the same products and destinations, for its coverage (or a new one). The preview (commit=false) writes nothing. A commit replaces every line (new line ids); order units set by hand above 0 are kept and an explicit 0 is lost. It can't be undone. A plan converted to shipments is not refreshed. It changes no inventory forecast number and starts no recompute: a plan is a snapshot. Needs a Flieber sign-in.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): Exactly one plan.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `replenishment_parameters` (~150 tokens)

Each inventory location's replenishment parameters, as the Flieber app's Settings → Replenishment parameters page shows them: safety stock, target days of coverage and overstock trigger, in days. Needs a Flieber sign-in.

Input parameters:

- `page` (integer): The page, from 1; meta.next_page names the next one.
- `search`: Part of a location's name or region.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `replenishment_parameters_set` (~261 tokens)

Set or clear inventory locations' safety stock, target days of coverage and overstock trigger, as the Flieber app's replenishment parameters page does. A commit replaces those values (the preview shows the previous ones; set them again to undo); a parameter an item does not name keeps its value. Preview first (commit=false), then commit with the preview_id. A commit makes Flieber recalculate the inventory forecast in the background (meta.warnings says so): inventory forecast reads may show old numbers for a few minutes. Needs a Flieber sign-in.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): One item per location; a location appears once per call.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `replenishment_parameters_by_product` (~169 tokens)

Each product's replenishment parameters at the locations it is stocked at, as the Flieber app's advanced replenishment parameters show them: the value that applies, whether it is the product's own or the location's, and the location's value. Needs a Flieber sign-in.

Input parameters:

- `location_id`: Only this inventory location.
- `page` (integer): The page, from 1; meta.next_page names the next one.
- `product_id`: Only this product.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `replenishment_parameters_by_product_set` (~289 tokens)

Override a product's safety stock, target days of coverage or overstock trigger at a location, or make it follow the location's value again, as the Flieber app's advanced replenishment parameters do. A commit replaces the product's own values at that location (the preview shows the previous ones; set them again to undo); a parameter an item does not name stays as it is. Preview first (commit=false), then commit with the preview_id. A commit makes Flieber recalculate the inventory forecast in the background (meta.warnings says so): inventory forecast reads may show old numbers for a few minutes. Needs a Flieber sign-in.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): One item per product and location, for at most 5 products per call (one read each).
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `supply_chain_product_locations` (~171 tokens)

Where each product sold in a store is fulfilled from and stored, as the Flieber app's advanced mapping of products to locations shows it: the location, whether it is the product's own choice or the store's default, and the store's defaults. Needs a Flieber sign-in.

Input parameters:

- `page` (integer): The page, from 1; meta.next_page names the next one.
- `product_id`: Only this product.
- `store_id`: Only this store (selling account).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `supply_chain_product_locations_set` (~300 tokens)

Map products to locations per store: the fulfillment and storage location of a product sold in a store, or the store's default, as the Flieber app's advanced mapping does. A commit replaces the mapping (the preview shows the previous one; map again to undo), and Flieber then deletes the per-product replenishment parameters and shipment lead times that no longer apply, across the organisation (the preview warns); they are not restored by mapping back. Preview first (commit=false), then commit with the preview_id. A commit makes Flieber recalculate the inventory forecast in the background (meta.warnings says so): inventory forecast reads may show old numbers for a few minutes. Needs a Flieber sign-in.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): One item per product and store, for at most 4 products per call (one read each).
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `export` (~1097 tokens)

Start one of the Flieber app's exports (the file an Export button or an editor downloads), wait for it, and give the app's download page for it, or a request_id to check again. Needs a Flieber sign-in.

Input parameters:

- `connection_id`: sku_mapping: one connection's id; omit it for every connection's.
- `coverage_period_from`: Replenishment exports: the coverage period's start.
- `coverage_period_to`: Replenishment exports: the coverage period's end.
- `currency`: Display currency (USD, EUR, GBP, …) of exports with money; default USD.
- `end_date`: Period end (sales, forecast, history).
- `filters` (array): The app's filters, one key=value each, sent as the query string (repeat a key for several values, e.g. product_ids=a and product_ids=b; selling_account_ids takes store ids joined by commas). Flieber…
- `group_by`: Grouped exports: what to group by, e.g. product, selling_account, tier, attr:<name>.
- `interval`: Timeseries exports: the period of each point.
- `kind`: Which export to start, each one of the app's Export buttons or editor files: sales_timeseries: Actual sales over time, units (Sales analytics chart) (needs start_date); sales_timeseries_revenue: Actu…
- `plan_id`: Replenishment plan exports: the plan's id.
- `request_id`: Resume an export started earlier: its request_id. Omit kind and the other inputs.
- `start_date`: Period start (sales, forecast, history).
- `target_shipment_departure`: Replenishment exports: the target shipment departure.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…
- `wait_s` (integer): How long to wait for the file, in seconds (0 to 45); up to five status reads are spread over it, the last at its end. If it isn't ready by then, the result carries the request_id to resume with.

### `reports` (~299 tokens)

The organisation's reports, as the Flieber app's Reports page lists them: type, status, whether a schedule started it, and when it was requested and finished; newest first unless sorted. A COMPLETED one can be downloaded with report_download; report_request starts a new one. Needs a Flieber sign-in.

Input parameters:

- `ordering`: Sort: -created (newest first, Flieber's default), created, -completed_at or completed_at.
- `page` (integer): The page, from 1; meta.next_page names the next one.
- `page_size` (integer): Reports per page, at most 100.
- `report_types` (array): Only these report types (any of them): PRODUCT_SELLING_ACCOUNT (product store catalog), SALES_FORECAST_ADJUSTED (adjusted sales forecast), SALES_FORECAST_ADJUSTED_EXTENDED (extended), SALES_FORECAST_…
- `statuses` (array): Only reports in these statuses: CREATED, RUNNING, COMPLETED, FAILED.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `report_request` (~322 tokens)

Start reports, as the Flieber app's Create report dialog does: one per report type (SALES_FORECAST_ADJUSTED, SALES_FORECAST_ADJUSTED_EXTENDED, SALES_FORECAST_MONTHLY_ADJUSTED). A commit asks Flieber to build each report in the background (CREATED, then RUNNING, then COMPLETED or FAILED; follow it with reports, then report_download). It adds a report to the organisation's list and changes no other data: no forecast, inventory or setting, and no inventory-forecast recompute. It is not undone by flieber or the app (neither deletes a report), and each commit starts new reports, so repeating it makes more. Preview first (commit=false; it calls nothing), then commit with the preview_id. Needs a Flieber sign-in.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): The reports to start: one item per report type, each type at most once (1 to 3 items).
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `report_download` (~255 tokens)

Download a finished report. The flieber CLI saves the file on this computer (--out, else a safe name in the current directory; --force to replace a file) and returns where. The MCP saves no file and gives the report's status and the Flieber app's Reports page, where the person downloads it. No result carries a link to the file. Needs a Flieber sign-in.

Input parameters:

- `force` (boolean): The flieber CLI only: replace an existing file.
- `out`: The flieber CLI only: the file to save the report to, or a directory to save it in (an existing one, or a path ending in /); missing folders are created. Default: flieber-report-<type>-<id>.csv (or t…
- `report_id` (string, required): The report's id, from reports (or report_request's commit).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `webhooks_page` (~136 tokens)

The Flieber app's Developers page, whose Webhooks section is where the organisation's webhook endpoints are added, tested and watched. The CLI opens it in the browser; on the MCP, give the person the link. It gives the app's page, not a webhooks-console login link. Needs a Flieber sign-in.

Input parameters:

- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `amazon_push_plans` (~280 tokens)

The Amazon FBA inbound plans Flieber pushed (Push to Amazon), newest first, as the app's Push to Amazon wizard shows them: one row per plan (one per Amazon connection and marketplace of a replenishment plan) with its status, the Amazon operation in progress or failed and its error, the placement fee once quoted, its shipments, and how many SKUs and units it carries. Pass replenishment_plan_id for one replenishment plan's pushes, or push_plan_id for one plan with its items. It reads Flieber only, never Amazon; status shows where the push is (for example PACKING_CONFIRMED, PLACEMENT_CONFIRMED, COMPLETED, FAILED, CANCELLED). Needs a Flieber sign-in.

Input parameters:

- `page` (integer): The page of 100 plans, newest first.
- `push_plan_id`: One push plan (push_plan_id from a previous call), with its items. Not with the others.
- `replenishment_plan_id`: Only the push plans of this replenishment plan.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `amazon_push_validate` (~348 tokens)

Check what a Push to Amazon of a replenishment plan would send, as the app's Review step does, without pushing: a dry run. One row per SKU and Amazon connection × marketplace (one future inbound plan each): pushable (with its FNSKU and units) or skipped (reason_code and reason: no SKU mapping, no FNSKU, zero quantity, …), plus a blocked row when a whole connection can't be pushed (an active push already exists, the Amazon authorisation lapsed: reauthorize_required). No rows: the plan has no Amazon destination. Nothing is created at Amazon and no push plan is saved. To find FNSKUs it doesn't have yet, Flieber may call Amazon's read-only Listings Items getListingsItem and FBA Inventory getInventorySummaries for the seller's connection (they share Amazon's rate limit with Flieber's own sync), and fills an FNSKU it finds into Flieber's inventory rows that had none, so it is not purely read-only (it never overwrites one). Refused when Push to Amazon is not enabled for the organisation. The person creates the plan at Amazon: in the app, or with `flieber push-to-amazon plans create` (amazon_push_create). Needs a Flieber sign-in.

Input parameters:

- `replenishment_plan_id` (string, required): The completed replenishment plan to check.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `amazon_ship_from_addresses` (~165 tokens)

The organisation's saved ship-from addresses for Push to Amazon (where shipments leave from, and whom Amazon may contact), as the app's Manage ship-from addresses dialog lists them: 100 per page, oldest first. Flieber's records only; nothing is read from Amazon. Needs a Flieber sign-in.

Input parameters:

- `page` (integer): The page of 100, oldest first.
- `search`: Text to look for (Flieber's search over the record).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `amazon_ship_from_contacts` (~165 tokens)

The organisation's saved ship-from contacts for Push to Amazon (where shipments leave from, and whom Amazon may contact), as the app's Manage ship-from contacts dialog lists them: 100 per page, oldest first. Flieber's records only; nothing is read from Amazon. Needs a Flieber sign-in.

Input parameters:

- `page` (integer): The page of 100, oldest first.
- `search`: Text to look for (Flieber's search over the record).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `amazon_ship_from_address_create` (~278 tokens)

Save new ship-from addresses for Push to Amazon, as the app's Add ship-from address dialog does (up to 5 per call). A label another address has (among the first 100) is refused. With is_default, it becomes the default and the previous default stops being it. Undo by deleting it (amazon_ship_from_address_delete). Preview first (commit=false), then commit with the preview_id. It changes Flieber's saved ship-from addresses only: nothing at Amazon, and a push plan keeps its own copy of the address it was created with. It triggers no inventory-forecast recompute. Needs a Flieber sign-in.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): The addresses to save, at most 5.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `amazon_ship_from_address_update` (~245 tokens)

Change one saved ship-from address, as the app's Edit and Set as default actions do: only the fields you give are sent. The preview shows each change, old → new. Reversible by another update. Preview first (commit=false), then commit with the preview_id. It changes Flieber's saved ship-from addresses only: nothing at Amazon, and a push plan keeps its own copy of the address it was created with. It triggers no inventory-forecast recompute. Needs a Flieber sign-in.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): Exactly one address.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `amazon_ship_from_address_delete` (~305 tokens)

Delete one saved ship-from address, as the app's Delete action does. Not reversible except by saving it again. After the preview, ask the person to type the address's label, and commit with what they typed as confirm_label; a missing or different label deletes nothing. Preview first (commit=false), then commit with the preview_id. It changes Flieber's saved ship-from addresses only: nothing at Amazon, and a push plan keeps its own copy of the address it was created with. It triggers no inventory-forecast recompute. Needs a Flieber sign-in.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `confirm_label`: commit=true only, and required then: the record's exact label as the person typed it after seeing the preview. Ask them to type it; never fill it in yourself. A different or missing label deletes not…
- `items` (array, required): Exactly one record.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `amazon_ship_from_contact_create` (~278 tokens)

Save new ship-from contacts for Push to Amazon, as the app's Add ship-from contact dialog does (up to 5 per call). A label another contact has (among the first 100) is refused. With is_default, it becomes the default and the previous default stops being it. Undo by deleting it (amazon_ship_from_contact_delete). Preview first (commit=false), then commit with the preview_id. It changes Flieber's saved ship-from contacts only: nothing at Amazon, and a push plan keeps its own copy of the contact it was created with. It triggers no inventory-forecast recompute. Needs a Flieber sign-in.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): The contacts to save, at most 5.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `amazon_ship_from_contact_update` (~245 tokens)

Change one saved ship-from contact, as the app's Edit and Set as default actions do: only the fields you give are sent. The preview shows each change, old → new. Reversible by another update. Preview first (commit=false), then commit with the preview_id. It changes Flieber's saved ship-from contacts only: nothing at Amazon, and a push plan keeps its own copy of the contact it was created with. It triggers no inventory-forecast recompute. Needs a Flieber sign-in.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): Exactly one contact.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `amazon_ship_from_contact_delete` (~305 tokens)

Delete one saved ship-from contact, as the app's Delete action does. Not reversible except by saving it again. After the preview, ask the person to type the contact's label, and commit with what they typed as confirm_label; a missing or different label deletes nothing. Preview first (commit=false), then commit with the preview_id. It changes Flieber's saved ship-from contacts only: nothing at Amazon, and a push plan keeps its own copy of the contact it was created with. It triggers no inventory-forecast recompute. Needs a Flieber sign-in.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `confirm_label`: commit=true only, and required then: the record's exact label as the person typed it after seeing the preview. Ask them to type it; never fill it in yourself. A different or missing label deletes not…
- `items` (array, required): Exactly one record.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `amazon_push_step` (~221 tokens)

Where a Push to Amazon plan stands, as the Flieber app's wizard would open it: its status, the Amazon operation running or its error, the wizard step and action, the placement fee once quoted, packing warnings, its shipments, and the plan's link in the app, with the next step. It never asks Amazon: Flieber polls Amazon and this reads the Flieber plan, so run it again while `waiting`. Placement and transport are confirmed only in the app by a person (they charge Amazon fees and cannot be undone): at that step this gives the link to hand over. Needs a Flieber sign-in.

Input parameters:

- `plan_id` (string, required): The Push to Amazon plan's id (from the create, or from the app).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `amazon_push_create` (~350 tokens)

Preview creating the inbound plan(s) at Amazon FBA for a saved replenishment plan, as the Flieber app's Push to Amazon does: one plan per Amazon store and marketplace with something to push, shipped from a saved address and contact. The preview (commit=false) creates nothing: it is the app's dry run (what each marketplace would get, what is skipped and why, what blocks it), with the ship-from address and contact. Creating cannot be undone (Flieber cannot cancel a plan at Amazon), so only the person creates: on the MCP a commit is always refused; give the person app_url (Push to Amazon in the app) or `flieber push-to-amazon plans create`, where the flieber CLI asks them to type a confirmation sentence and creates only if the dry run still matches it. Amazon creates the plans asynchronously: follow each with amazon_push_step. Placement and transport, which charge Amazon fees, are confirmed only in the app. It changes no inventory forecast. Needs a Flieber sign-in.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): Exactly one replenishment plan.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `amazon_push_packing_options` (~229 tokens)

Get a Push to Amazon plan's packing options, as the app's Packing step does: right after the create the commit asks Amazon to generate them (asynchronous, no fee, nothing ships); once ready it lists each option, its packing groups and fees, and the cartons on file per SKU. Nothing to undo: it commits no packing. The preview (commit=false) only reads the plan. Needs a Flieber sign-in.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): Exactly one plan.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `amazon_push_packing_group_items` (~164 tokens)

The items of one packing group of a Push to Amazon plan (SKU, FNSKU, units), as the app's Packing step shows them: the boxes of a group must hold exactly these. Flieber asks Amazon once per group and keeps the answer. Needs a Flieber sign-in.

Input parameters:

- `packing_group_id` (string, required): A packing group (from amazon_push_packing_options).
- `plan_id` (string, required): The Push to Amazon plan.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `amazon_push_packing_confirm` (~306 tokens)

Confirm a Push to Amazon plan's packing, as the app's Packing step does: the chosen packing option and the boxes (one SKU per box type: units per box, box count, dimensions, weight), which Amazon receives asynchronously. Flieber has no undo: the option is confirmed at Amazon, and the boxes can be sent again only while Amazon's packing warnings hold the plan. Use the person's real carton data; never guess dimensions or weights. The preview (commit=false) sends nothing: it reads the plan and checks that the boxes add up to the plan's units per SKU, as Flieber does. Commit with the preview_id. It changes no inventory forecast. Needs a Flieber sign-in.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): The boxes, one item per box type. Per SKU, units_per_box × box_count summed must equal the plan's quantity.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `amazon_push_packing_acknowledge` (~221 tokens)

Accept the packing warnings Amazon raised on a Push to Amazon plan's boxes and go on, as the app's "continue anyway" does. It changes only Flieber's record (Amazon is not called) and cannot be undone; to fix the boxes instead, run amazon_push_packing_confirm again. The preview (commit=false) shows the warnings. Needs a Flieber sign-in.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): Exactly one plan.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `amazon_push_fetch_labels` (~221 tokens)

Fetch a Push to Amazon plan's shipping labels from Amazon and store them in Flieber, as the app's Results step does, once transport is confirmed (in the app). Fetching again replaces the stored labels (for another format); there is nothing else to undo. The preview (commit=false) reads the plan. amazon_push_label_links then gives download links. Needs a Flieber sign-in.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): Exactly one plan.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `amazon_push_label_links` (~244 tokens)

A Push to Amazon plan's stored shipping labels (PDF), as the app's Download labels gives them. The flieber CLI saves each shipment's file (--out, --force; at most 2 shipments per call). On the MCP nothing is saved and no download link is returned (it would be a credential): it gives the app page where the person downloads them. Needs a Flieber sign-in.

Input parameters:

- `force` (boolean): The flieber CLI only: replace a file that exists.
- `out`: The flieber CLI only: a directory to save the files in (default: the current one), or a file path for one shipment. Not on the MCP, which saves nothing.
- `plan_id` (string, required): The Push to Amazon plan.
- `shipment_id`: One shipment; leave it out for every shipment (at most 2).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `amazon_push_boxes` (~150 tokens)

Amazon's boxes of one Push to Amazon shipment, whose box ids own-carrier tracking is sent for, as the app's tracking form lists them. Flieber reads them from Amazon. Then amazon_push_submit_tracking. Needs a Flieber sign-in.

Input parameters:

- `plan_id` (string, required): The Push to Amazon plan.
- `shipment_id` (string, required): The plan's shipment (from amazon_push_step).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `amazon_push_submit_tracking` (~232 tokens)

Send the carrier tracking id of every box of a Push to Amazon shipment that ships on your own carrier, as the app's Results step does (Amazon tracks partnered-carrier shipments itself). Not undone, but correctable: send corrected ids the same way. The preview (commit=false) reads the plan and Amazon's boxes (amazon_push_boxes) and checks every box has one id. Needs a Flieber sign-in.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): One item per box of the shipment: every box.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `forecast_plan_series` (~410 tokens)

The Demand Forecast's plan as the portal charts it: one series (default vibee_plan, the stored plan) in units, summed per group (product, listing, store, channel, tier or total) and period. Needs a Flieber sign-in.

Input parameters:

- `channels`: Only these channels: Amazon, Shopify, Walmart, TikTok Shop, Wholesale, Other.
- `end_date`: YYYY-MM-DD. Default and latest: the plan's last day (horizon_end).
- `group_by` (string): Sum per product, listing, store, channel, tier or total.
- `interval` (string): Period of each point: day, week (from Monday), month or quarter.
- `page` (integer): The page to read, from 1 (meta.next_page names the next).
- `page_size` (integer): Groups a page (default 50, at most 200). Lowered so a page stays under 2,000 points; meta.next_page names the next page.
- `product_ids`: Only these products (ids from products or listings).
- `series` (string): The one series to return: vibee_plan (the stored plan, the Demand Forecast's main line) or vibee_plan_raw (its base: each listing's model in use). For actual sales, adjusted sales or Flieber's foreca…
- `start_date`: YYYY-MM-DD. Default: the plan's first day (forecast_start). Up to two years before it, for history.
- `store_ids`: Only these stores (selling account ids).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…
- `tiers`: Only these tiers: A, B, C, D.

### `forecast_plan_listing` (~158 tokens)

One listing's plan, as the portal's plan editor shows it: the model in use and why, the plan over the next 364 days, and its intents, growth, end of life, events, targets and notes. Needs a Flieber sign-in.

Input parameters:

- `product_id` (string, required): The product (an id from products or listings).
- `store_id` (string, required): The store (selling account) it is sold in.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `forecast_plan_events` (~217 tokens)

The plan's active events (promotions, launches, custom), by start, each with its listings and their factor. Add or remove them with forecast_plan_change (event, remove_event). Needs a Flieber sign-in.

Input parameters:

- `end_date`: YYYY-MM-DD: only those starting on or before it.
- `page` (integer): The page to read, from 1 (meta.next_page names the next).
- `page_size`: Rows a page (default 50; at most 200).
- `product_ids`: Only those on any listing of these products.
- `start_date`: YYYY-MM-DD: only those ending on or after it.
- `store_ids`: Only those on any listing of these stores.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `forecast_plan_targets` (~222 tokens)

The plan's active targets, by start: units over a period across their listings and the factor the plan is scaled by after the protected window. Add or remove them with forecast_plan_change (target, remove_target). Needs a Flieber sign-in.

Input parameters:

- `end_date`: YYYY-MM-DD: only those starting on or before it.
- `page` (integer): The page to read, from 1 (meta.next_page names the next).
- `page_size`: Rows a page (default 50; at most 200).
- `product_ids`: Only those on any listing of these products.
- `start_date`: YYYY-MM-DD: only those ending on or after it.
- `store_ids`: Only those on any listing of these stores.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `forecast_plan_versions` (~134 tokens)

The plan's approved versions, latest first: each a frozen copy of the plan. Needs a Flieber sign-in.

Input parameters:

- `page` (integer): The page to read, from 1 (meta.next_page names the next).
- `page_size`: Rows a page (default 50; at most 200).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `forecast_plan_change_log` (~237 tokens)

The plan's change log, latest first: who changed what, why and its impact; undo_allowed marks the change forecast_plan_undo would undo. Needs a Flieber sign-in.

Input parameters:

- `end_date`: YYYY-MM-DD: changes covering days on or before it.
- `kinds`: Only these kinds (batch, undo, settings, set_default_model, approve_version, …).
- `page` (integer): The page to read, from 1 (meta.next_page names the next).
- `page_size`: Rows a page (default 50; at most 200).
- `product_ids`: Only changes touching these products.
- `start_date`: YYYY-MM-DD: changes covering days on or after it.
- `statuses`: Only these statuses. Default: applied and undone (previews only when asked for).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `forecast_plan_change` (~333 tokens)

Change the Demand Forecast plan as the portal's plan editor saves it: one batch of edits (adjust by a percentage, set units, growth, model switch, end of life, events, targets, notes, …) on listings or products. The preview is Flieber's own (impact before and after, stored 30 minutes); the commit applies exactly that preview, and Flieber refuses it if the plan changed since. forecast_plan_undo can reverse it only while it is the latest change in force; committing the same preview again is refused. Needs a Flieber sign-in and plan mode.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): The edits, in order: previewed and applied together as one change (a batch), or not at all.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `reason` (string): Why: shown in the change log.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…
- `upstream_preview_id`: From the preview's meta.upstream_preview_id: send it back unchanged with commit=true. It names the change Flieber previewed; the commit applies exactly that one.

### `forecast_plan_undo` (~271 tokens)

Undo the plan's latest change still in force, as the portal's change log does: the preview shows which change it would undo; the commit undoes exactly that one, and Flieber refuses if another change came since. Preview and commit again to walk back one more change; committing the same preview twice is refused. An undo can't be undone. Needs a Flieber sign-in and plan mode.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array): At most one item: the change you mean to undo (optional).
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…
- `upstream_preview_id`: From the preview's meta.upstream_preview_id: send it back unchanged with commit=true. It names the change the preview showed; the commit undoes exactly that one.

### `forecast_plan_settings` (~158 tokens)

The Demand Forecast plan's settings, as the portal's plan settings show them: level, direction, split, model mode, the account default model, benchmark, growth tolerance, protected days, future price rule, account type, and the plan revision. An organisation that never changed them reads Flieber's defaults. Change them with forecast_plan_settings_set (the account default model with forecast_plan_default_model_set). Needs a Flieber sign-in.

Input parameters:

- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `forecast_plan_settings_set` (~341 tokens)

Change the Demand Forecast plan's settings, as the portal's plan settings do. The preview reads the settings and shows each one named, before and after; the commit sends only those that change, and Flieber applies them at once and logs one settings change (forecast_plan_undo puts them back while it is the latest change in force). Changing model_mode re-resolves every listing's model in use, and changing protected_days recomputes every target's factor. The commit is refused if the settings changed since the preview. The account default model is forecast_plan_default_model_set's. Needs a Flieber sign-in and plan mode.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): One item: the settings to change (only those named are sent; the others are kept).
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `reason` (string): Why: shown in the change log.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…
- `upstream_preview_id`: From the preview's meta.upstream_preview_id: send it back unchanged with commit=true. It is a digest of the settings the preview showed; the commit is refused if they changed since.

### `forecast_plan_default_model_set` (~367 tokens)

Set the account's default forecast model for the Demand Forecast plan (seasonal, top_down, naive or last_year; null goes back to the backtest's default), as the portal's plan settings do. Listings follow it where they use the account default (model_mode tenant_default, or no backtest yet). The preview is Flieber's own (units before and after over the next 364 days, stored 30 minutes; for an account-wide change Flieber counts no review flags, so those columns are null, and may count only some listings, which impact_complete and meta.warnings say); the commit applies exactly that preview, and Flieber refuses it if the plan changed since. forecast_plan_undo can reverse it while it is the latest change in force. Needs a Flieber sign-in and plan mode.

Input parameters:

- `commit` (boolean, required): false: preview only; true: apply, with the preview_id from the preview of the same arguments.
- `items` (array, required): One item: the account default model to set.
- `preview_id`: From a preview of these arguments. Required when commit is true. It does not expire; after a credential change, run the preview again.
- `reason` (string): Why: shown in the change log.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…
- `upstream_preview_id`: From the preview's meta.upstream_preview_id: send it back unchanged with commit=true. It names the change Flieber previewed; the commit applies exactly that one.

### `new_product_catalog` (~260 tokens)

New Product Forecast: the organisation's products, to pick the new one to forecast (tagged new, recent, unsold, sold or discontinued, in that order, best first 90 days first) and see the others' launches. Search by code or name. Its figures are New Product Forecast's own estimate from the proxies' launches, not Flieber's actual sales, adjusted sales or forecast signals. Needs a Flieber sign-in; only for organisations set up for the Flieber portal (Flieber refuses others).

Input parameters:

- `limit` (integer): Rows per page (1–500).
- `offset` (integer): Zero-based index of the first row.
- `search`: Only products whose code or name contains this (any case).
- `tag` (array): Only products with these tags: new (Flieber's New tag), recent (first seen in 90 days), unsold (listed, never sold), sold, discontinued.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `new_product_channels` (~164 tokens)

New Product Forecast: the channels a new product can be forecast in (the forecast's `channels` must be among them), most units in the last 12 months first, and the sales history the forecast reads. Its figures are New Product Forecast's own estimate from the proxies' launches, not Flieber's actual sales, adjusted sales or forecast signals. Needs a Flieber sign-in; only for organisations set up for the Flieber portal (Flieber refuses others).

Input parameters:

- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

### `new_product_forecast` (~828 tokens)

New Product Forecast: forecast a product with no sales yet, month by month, from the launches of the products most like it (proxies), as the portal's New Product Forecast does. Units per month (base, low–high range, typical launch) from the forecast's first month, with the run's figures on every row: launch month, basis, whether it needs a human (best match below 0.60), totals. Computed on request; nothing is stored. new_product_candidates shows the proxies for the same inputs. Its figures are New Product Forecast's own estimate from the proxies' launches, not Flieber's actual sales, adjusted sales or forecast signals. Needs a Flieber sign-in; only for organisations set up for the Flieber portal (Flieber refuses others).

Input parameters:

- `basis`: What the forecast is built from: auto (the default: the typical launch when the best match is below 0.60, else the picked proxies), proxies or typical_launch.
- `blend`: How the picked proxies combine: median (the default) or weighted by match.
- `channels` (array, required): The channels it will sell in (1–20), each one of new_product_channels' `channel`.
- `criteria_off` (array): Match criteria to switch off: product_type, buyer_and_use, price, channels, season, launch_conditions. The score is the weighted mean of the criteria that are on.
- `description`: What it is, in words; helps the match.
- `excluded` (array): Product codes never picked as proxies.
- `family`: With kind variant: the family.
- `horizon_months`: Months forecast: 12 (the default) or 18.
- `kind`: new (a net-new product, the default), version (a new version of `replaces_code`) or variant (a variant in the existing `family`).
- `launch_date` (string, required): The planned launch date (YYYY-MM-DD).
- `level`: How each proxy is brought to today's level: per_active_product (the default) or share_of_brand.
- `multiplier`: Scales the level (0.1–5). Default 1.
- `pins` (array): Product codes always ranked as candidates (at most 500).
- `price` (number, required): The planned price in USD (at least 0.01).
- `product_code` (string, required): The new product's code (from new_product_catalog, or one not in it yet).
- `product_name`: Its name; helps the match.
- `range`: The low–high range: full (lowest–highest proxy, the default) or middle (middle 60%).
- `replaces_code`: With kind version: the code of the product it replaces.
- `selected`: The proxies to use, by product code. Omitted: Flieber's pick (the top 5 usable). An empty list: none (the typical launch).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…
- `weight_buyer_and_use`: Weight of the criterion 'same buyer and use' (0–2). Default 0.8.
- `weight_channels`: Weight of the criterion 'same channels' (0–2). Default 0.8.
- `weight_launch_conditions`: Weight of the criterion 'comparable launch conditions' (0–2). Default 0.6.
- `weight_price`: Weight of the criterion 'similar price' (0–2). Default 0.8.
- `weight_product_type`: Weight of the criterion 'same product type' (0–2). Default 1.
- `weight_season`: Weight of the criterion 'launched in a similar season' (0–2). Default 0.5.

### `new_product_candidates` (~818 tokens)

New Product Forecast: the products judged as proxies for a new product, best match first, with the six criteria scores, lane, whether each is picked, pinned or excluded, and its launch. Same inputs as new_product_forecast; Flieber returns the top 300 and every picked, pinned or excluded one. Computed on request; nothing is stored. Its figures are New Product Forecast's own estimate from the proxies' launches, not Flieber's actual sales, adjusted sales or forecast signals. Needs a Flieber sign-in; only for organisations set up for the Flieber portal (Flieber refuses others).

Input parameters:

- `basis`: What the forecast is built from: auto (the default: the typical launch when the best match is below 0.60, else the picked proxies), proxies or typical_launch.
- `blend`: How the picked proxies combine: median (the default) or weighted by match.
- `channels` (array, required): The channels it will sell in (1–20), each one of new_product_channels' `channel`.
- `criteria_off` (array): Match criteria to switch off: product_type, buyer_and_use, price, channels, season, launch_conditions. The score is the weighted mean of the criteria that are on.
- `description`: What it is, in words; helps the match.
- `excluded` (array): Product codes never picked as proxies.
- `family`: With kind variant: the family.
- `horizon_months`: Months forecast: 12 (the default) or 18.
- `kind`: new (a net-new product, the default), version (a new version of `replaces_code`) or variant (a variant in the existing `family`).
- `launch_date` (string, required): The planned launch date (YYYY-MM-DD).
- `level`: How each proxy is brought to today's level: per_active_product (the default) or share_of_brand.
- `limit` (integer): Rows per page (1–150).
- `multiplier`: Scales the level (0.1–5). Default 1.
- `offset` (integer): Zero-based index of the first row.
- `pins` (array): Product codes always ranked as candidates (at most 500).
- `price` (number, required): The planned price in USD (at least 0.01).
- `product_code` (string, required): The new product's code (from new_product_catalog, or one not in it yet).
- `product_name`: Its name; helps the match.
- `range`: The low–high range: full (lowest–highest proxy, the default) or middle (middle 60%).
- `replaces_code`: With kind version: the code of the product it replaces.
- `selected`: The proxies to use, by product code. Omitted: Flieber's pick (the top 5 usable). An empty list: none (the typical launch).
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…
- `weight_buyer_and_use`: Weight of the criterion 'same buyer and use' (0–2). Default 0.8.
- `weight_channels`: Weight of the criterion 'same channels' (0–2). Default 0.8.
- `weight_launch_conditions`: Weight of the criterion 'comparable launch conditions' (0–2). Default 0.6.
- `weight_price`: Weight of the criterion 'similar price' (0–2). Default 0.8.
- `weight_product_type`: Weight of the criterion 'same product type' (0–2). Default 1.
- `weight_season`: Weight of the criterion 'launched in a similar season' (0–2). Default 0.5.

### `portal_read_demand_forecast` (~194 tokens)

For the demand-forecast view only (not for agents): one of its Flieber REST reads, forwarded as the portal sends it.

Input parameters:

- `body`: The JSON body of a POST.
- `count` (boolean): Ask Flieber for X-Total-Count, as the portal's list calls do.
- `method` (string): The HTTP method the view's request uses.
- `params`: Query parameters.
- `path`: The Flieber REST path, relative to /api/v1/ (e.g. forecast/trends/). None: only the call's tenant, no request.
- `tenant`: The Flieber organisation for this call: its id (`org_…`) or its UUID, as `tenants` lists them. Needed when your sign-in belongs to several organisations; omit it to use the default. An API key reads…

## Diagnostics

Captured diagnostic sections: Provenance, Install scripts, Dependencies. The full working is on the page: https://verifymcp.io/servers/com-flieber-flieber/flieber#diagnostics

## Score history

- 2026-11-05: 69
- 2026-11-04: 69
- 2026-11-03: 68
- 2026-11-02: 68
- 2026-11-01: 67
- 2026-10-31: 52
- 2026-10-30: 66
- 2026-10-29: 51
- 2026-10-28: 66
- 2026-10-27: 50
- 2026-10-26: 65
- 2026-10-25: 64
- 2026-10-24: 49
- 2026-10-23: 63
- 2026-10-22: 48

## Common questions

### What is the Flieber MCP server?

Flieber is an MCP server listed in the public MCP registry as com.flieber/flieber. Your Flieber account in your AI assistant: sales, forecast, inventory, replenishment and more. This page covers its PyPI package (flieber).

### Is the Flieber MCP server safe to use?

Flieber scores 69 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Flieber MCP server expose?

Flieber exposes 155 tools: ping, status, tenants, account_status, list_terms, and 150 more. Their descriptions and schemas cost roughly 44,301 tokens of context every time the server is loaded.

### Is the Flieber MCP server still maintained?

Flieber is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the Flieber MCP server under?

Flieber declares the Proprietary licence, which is not on the OSI-approved list. Read the terms before using it at work, and note this covers the source only, not the cost of any service it calls.

## Links

- PyPI project: https://pypi.org/project/flieber/
- Socket report: https://socket.dev/pypi/package/flieber
- Website: https://flieber.com/
- Changelog RSS feed: https://verifymcp.io/servers/com-flieber-flieber/flieber.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-flieber-flieber/flieber.json
- HTML version of this page: https://verifymcp.io/servers/com-flieber-flieber/flieber
