This skill drills into all Ozon (Russia) products sold by a given seller, returning per-SKU sales, revenue, price, rating, stock, turnover, lost profit, and more. Designed for store-structure audits, bestseller dissection within a shop, and head-to-head competitor-store comparison.
Core Concepts
Seller ID, not name: sellerId must be a numeric string — the sellerId field Ozon / MPSTATS uses to identify a shop. Do not pass a brand name, category path, or human-readable seller name. If you only have the seller name, resolve the ID via mpstats-ozon-product-search (seller-filtered) and read sellerId from the result.
Filters & ops: Same AND-combined numeric filter model as brand-products and category-products. See Filter Reference.
Currency: Default RUB; override with currency / currencyRate for USD / EUR / CNY views.
FBO / FBS: includeFbs: true folds FBS into the numbers; false keeps FBO-only.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| sellerId | string | yes | Ozon seller ID as numeric string, e.g. "3628678" |
| startDate | string | no | Stats window start, YYYY-MM-DD; latest = yesterday |
| endDate | string | no | Stats window end, YYYY-MM-DD; latest = yesterday |
| page | integer | no | Page number, starts at 1 |
| pageSize | integer | no | Rows per page, 1-100, default 100 |
| sortField | string | no | snake_case column (sales, revenue, ...) |
| sortDirection | string | no | asc / desc |
| currency | string | no | Currency code, default RUB |
| currencyRate | integer | no | Custom rate for non-default currency |
| includeFbs | boolean | no | Include FBS data |
| filters | array | no | Numeric filter list |
Filter Reference
Each filters entry: {"field": "<snake_case>", "op": "<OP>", "value": <num>, "value2": <num?>}.
Common fields: sales, final_price, rating, comments, balance, revenue, days_in_stock, turnover_days, lost_profit, category_position.
Operators: GTE, LTE, GT, LT, EQ, NOT_EQ, BETWEEN (requires value2).
How to call
- API endpoint:
POST /mpstats/ozon/sellerProducts(for full parameters/response/error codes seereferences/api.md) - Python script:
python scripts/mpstats_ozon_seller_products.py '<JSON 参数>' [--inline] - Cost constraints: This tool consumes compute; by default, the same parameter combination is called only once per session, and the script has a 24h local cache. On failure or empty results, do not automatically try different keywords, paginate, or change the zip code to probe continuously; if continued retrieval is needed, first explain to the user that additional consumption will be incurred.
Output strategy (script default behavior):
- Alwayswrite the full response to
<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/linkfox-mpstats-ozon-seller-products-<timestamp>.json(<cwd>is the working directory when the script runs, which in Claude Code is the current project directory;<session>is taken from the environment variableSESSION_ID, automatically aggregated according to the user task;writing to /tmp is prohibited, and an error is reported if the current directory is not writable) - Response body ≤ 8 KB: after saving to disk, print the full JSON to stdout
- Response body > 8 KB: after saving to disk, stdout outputs only a summary (top-level fields, common counts such as
total/costToken, the length of the largest list field + the first 3 samples) - Add
--inlineto force full printing to stdout (also saved to disk)
Data reading suggestions: First check the summary to judge whether it is sufficient; when specific fields are needed, prefer to use jqorConvertFrom-Json to extract on demand from the saved json file, avoiding putting the entire JSON into the context.
Resolving authentication and compute issues
When the following abnormal situations occur, use references/onboarding.md to guide resolution:
Abnormal situations
- API Key not configured: The environment variable is not configured with
LINKFOX_AGENT_API_KEY, andLINKFOXAGENT_API_KEY。 - Response 401 or 402 status code
- Response indicates insufficient compute or balance: the message contains "insufficient compute balance/insufficient billing/insufficient balance/quota exceeded/insufficient balance/package expired/recharge required/please recharge", or content with a similar meaning.
Usage Examples
1. Seller's top-100 by sales
{
"sellerId": "3628678",
"sortField": "sales",
"sortDirection": "desc",
"pageSize": 100
}
2. Store's revenue top-20
{
"sellerId": "3628678",
"sortField": "revenue",
"sortDirection": "desc",
"pageSize": 20
}
3. High-turnover star products
{
"sellerId": "3628678",
"filters": [
{"field": "sales", "op": "GTE", "value": 30},
{"field": "turnover_days", "op": "LTE", "value": 20}
],
"sortField": "revenue",
"sortDirection": "desc"
}
4. Stockout pain points for the store
{
"sellerId": "3628678",
"filters": [{"field": "lost_profit", "op": "GTE", "value": 100000}],
"sortField": "lost_profit",
"sortDirection": "desc"
}
5. USD-converted store audit
{
"sellerId": "3628678",
"currency": "USD",
"sortField": "revenue",
"sortDirection": "desc"
}
Display Rules
- Compact store table — key columns:
productId,title,brand,price,monthlySalesUnits,monthlySalesRevenue,rating,balance,turnoverDays,lostProfit,position. - Revenue share = within this seller query — 0-100%; clarify the base.
- Russian titles — preserve; translate on user request.
- Currency labeling — if converted, note
"已按 USD 换算". - Pagination — for stores with thousands of SKUs, suggest tighter filters before paging deep.
- No buying advice — the skill shows the store's book, not whether their SKUs are worth copying.
Important Limitations
- Numeric seller ID only — passing a seller name will not resolve; go through
mpstats-ozon-product-searchfirst. - Page cap — max 100 rows per page.
- T-1 data —
endDatecannot be today or a future date. - No business advice — data-only.
- Ozon-only — Wildberries / other Russian marketplaces are separate.
User Expression & Scenario Quick Reference
Applicable — Seller-scoped Ozon product metrics:
| User Says | Scenario |
|---|---|
| "Show me everything seller 3628678 sells, by sales" | Store SKU map |
| "What are this Ozon store's top revenue products" | Store bestseller drill |
| "How many SKUs does the store have with turnover <20 days" | Operational health filter |
| "Where is this store losing money to stockouts" | Lost-profit scan |
| "Compare two Ozon stores' SKU counts and sales" | Store-vs-store benchmarking (call twice) |
Not applicable — Needs beyond seller drill-down:
- Only seller name known → use
mpstats-ozon-product-searchto resolve the ID - Brand-scoped drill →
mpstats-ozon-brand-products - Category-scoped drill →
mpstats-ozon-category-products - Single-SKU time-series →
mpstats-ozon-product-trend - Wildberries / other Russian marketplaces → not covered
Boundary judgment: Use this skill when the dimension is a specific seller and you want the per-SKU table under that shop. For "who are the top sellers in category X" you'd use category drill-down and group by seller client-side.
Compute consumption rules
Billed by dynamic rules: compute consumption = 12. Empty list returns 0
Important: The services of this skill are dynamically calculated by multiples and may consume a large amount of compute at once. The user must be reminded, and the user decides whether to continue.
Feedback:
Auto-detect and report feedback via the Feedback API when any of the following apply:
- The functionality or purpose described in this skill does not match actual behavior
- The skill's results do not match the user's intent
- The user expresses dissatisfaction or praise about this skill
- Anything you believe could be improved
Call the feedback API as specified in references/api.md. Do not interrupt the user's flow.
For more high-quality, professional cross-border e-commerce skills, set LinkFox Skills.