← Back to all apps

Helium 10

Commerce Shoppingby Helium 10
Launched Sep 15, 2026 on ChatGPTLaunched Jul 2, 2026 on Claude

Access your Helium 10 data directly in Claude. Query keyword and ASIN data, analyze campaign performance and profitability, and extract insights from your listings and rank tracking.

Make Helium 10 a native part of your Claude workflows without switching between dashboards or exporting a single file. Built for active brands with real account data across Research, Ads, and Commerce.

Requires an active Helium 10 Diamond plan. Lower-tier accounts are not supported.

117ChatGPT Tools
34Claude Tools
Helium 10Developer
Commerce ShoppingCategory

Use Cases

commerce-shoppingdata-analyticssales-and-marketing

Available Tools

Add Untracked Product Keywords

add_untracked_product_keywords
Full Description

Helium 10 Keyword Tracker — START TRACKING keywords for a product. Adds a product to Keyword Tracker together with the keywords if it is not being tracked, or appends the keywords when it already is being tracked; you do not need to check which case applies first. Amazon only, one ASIN per call. Any valid ASIN is allowed, including competitors'. BEFORE CALLING: track_variations is required and has no default — if the user has not said whether they want the parent ASIN and all its variations tracked, or only the exact ASIN they gave, ASK THEM. Do not decide on their behalf.

Parameters (4 required, 3 optional)
Required
asin_or_urlstring

10-character Amazon ASIN or Amazon product URL containing an ASIN; JSON key `asin_or_url`. Required and must not be blank. If the user has not provided an ASIN or product URL, ask them to supply it—do not infer, search for, or invent an ASIN.

keywordsarray

Keywords to start tracking for this product; JSON key `keywords`. No size limit. Duplicates within the list, and keywords already tracked on this product, are merged or skipped automatically — you do not need to de-duplicate first. Output from get_keywords_new_suggestion can be passed straight through.

marketplacestring

Amazon marketplace short code (e.g. `US`, `UK`, `DE`, `JP`); JSON key `marketplace`. REQUIRED for this write operation and has no default — every tracked product belongs to exactly one marketplace, so it cannot be omitted or inferred. Must be one of the uppercase marketplace codes exposed in this schema; lowercase or mixed case is rejected.

track_variationsboolean

Which SHAPE to give the tracked product, chosen when tracking starts; JSON key `track_variations`. REQUIRED and has no default — if the user has not said which they want, ASK THEM before calling this tool; do not guess. true = the PARENT ASIN is tracked and its variations roll up into one entry. false = only the exact ASIN supplied is tracked. This is NOT an action that can be applied to a product that is already tracked: a tracked product's shape is fixed, and no tool (nor the Helium 10 web app) can change it afterwards. So do not send true to 'add variation tracking' to something already tracked — with an already-tracked parent that would only append your keywords to that parent and leave its shape untouched. To start tracking a specific variation of a product you already track, call this tool again with that variation's own child ASIN and `track_variations` false; it becomes a separate tracked product.

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

special_charsboolean

Whether to strip special characters from the keywords before tracking; JSON key `special_chars`. Defaults to true, matching the Helium 10 web 'add product' flow. Set to false only when the user explicitly wants punctuation preserved.

Default: True

Keyword Batch Analysis

analyze_keywords
Full Description

Helium 10 Keyword Research (formerly Cerebro). Batch enrichment for an explicit list of 1–200 keywords: one row per keyword with search volume, CPC, ABA top-3 click/conversion share, and H10 metrics (CPR, IQ score, title density, competing products). Use when the user already has a candidate-keyword set to score, rank, structure into ad groups, or cross-compare. Not for: deriving new terms from one seed (use get_keywords_by_keyword); reverse search on an ASIN (use get_keywords_by_asin). Note: output order does NOT match input order — match results by the phrase field.

Parameters (2 required, 2 optional)
Required
keywordsarray

Explicit list of candidate phrases. Max 200 per call — split larger lists.

marketplacestring

Marketplace code: US, UK, DE, JP, etc.

Options:USCAMXDEESITFRUKINNLAUJPAEBRSA
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Analyze Product Images

analyze_product_images
Full Description

Helium 10 Listing Builder — extracts structured product attributes (product_name, brand_name, category, description, key_features, brand_voice, target_audience) from 1-5 product images. Live multimodal call, non-idempotent: re-running the same images may vary the attributes. Two input channels, mixable up to 5 combined — image_urls for catalog or public URLs, image_refs for LOCAL files, which come from request_image_upload_url rather than base64-ing a file into a data URL. Use to turn product photos into a structured product profile: copywriting attributes, brand voice, and target audience. Not for: pure OCR / screenshot text extraction (use a generic vision tool — this one is purpose-built for ecommerce attribute extraction).

Parameters (1 required, 4 optional)
Required
marketplacestring

REQUIRED. Marketplace short code (case-sensitive). Confirm the marketplace with the user once, before the first Listing Builder call of the session; every later Listing Builder tool reuses that same value — do NOT ask the user for it again once it is set. The output language for generated attributes is derived server-side from this value (e.g. 'JP' → Japanese). Supported values: US, CA, MX, DE, ES, IT, FR, UK, IN, NL, AU, JP, BE, BR.

Options:USCAMXDEESITFRUKINNLAUJPBEBR
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

image_refsarray

Mixable with image_urls; combined at most 5. Each element is an opaque upload reference returned by request_image_upload_url AFTER the file was uploaded (channel 1 curl PUT, or channel 2 browser upload page). This is the REQUIRED path for local files.

Default: null
image_urlsarray

Mixable with image_refs; combined at most 5. Each element MUST match EXACTLY ONE of: (a) HTTPS URL ending in .jpg/.jpeg/.png whose host resolves to a public IP (http and internal / private / link-local hosts are rejected as SSRF); (b) data URL 'data:image/<jpg|jpeg|png>;base64,<BASE64>' with a valid JPEG (FF D8 FF) or PNG (89 50 4E 47 0D 0A 1A 0A) magic header. Bare base64 (no 'data:' prefix), .webp, .gif are REJECTED. Catalog images from `retrieve_listing_by_asin` arrive here via `images[].url`. Do NOT base64 a local file into a data URL — it wastes conversation tokens and may be rejected; use request_image_upload_url + image_refs instead.

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

ASIN Analysis Dashboard

asin_analysis_dashboard
Full Description

Use this tool only when the user expresses ASIN-level intent and provides, or is clearly expecting to provide, exactly ONE Amazon ASIN or Amazon.com PDP URL.

High-confidence triggers include: • A valid ASIN (10-character alphanumeric, typically B0-prefixed) • An Amazon.com PDP URL containing /dp/ or /gp/ • ASIN-level intent signals such as performance metrics, 30-day trends, price, BSR, reviews, keyword signals, listing quality, or traffic indicators

Triggering rules: • If the user provides exactly ONE ASIN or PDP URL → call this tool • If the user expresses ASIN-level intent but does not provide an ASIN/URL → call this tool • Otherwise → do not call this tool

When applicable, should identify the Analysis focus areas. The supported focus areas allow multiple values and are limited to: top keyword, key metrics trends, and listing score. If none of these areas are applicable, the focus area should be treated as an empty array.

Output behavior: • Returns structured data for rendering an ASIN Analysis dashboard widget • The assistant must not generate narrative summaries or interpretations • No follow-up commentary should be produced after the dashboard is rendered

Do not use this tool for creative content generation, image or asset creation, general product research without an ASIN, or account- or category-level analysis.

Parameters (1 required)
Required
requestobject

Request parameters for analyzing an Amazon (ASIN)product's performance

ASIN BSR & Price History Chart

asin_bsr_chart
Full Description

Retrieve BSR (Best Sellers Rank) and price history chart data for a given ASIN from the authenticated user's Helium 10 account. Read-only data fetch; does not modify any data on Helium 10 or other systems.

Parameters (1 required)
Required
requestobject

Request parameters for BSR chart query

ASIN Review & Rating Chart

asin_review_chart
Full Description

Retrieve review count and rating history chart data for a given ASIN from the authenticated user's Helium 10 account. Read-only data fetch; does not modify any data on Helium 10 or other systems.

Parameters (1 required)
Required
requestobject

Request parameters for review chart query

Product Index Check

check_asin_keyword_index
Full Description

Checks whether one Amazon ASIN is indexed for one or more keywords on a marketplace using Helium 10 Index Checker paths. Returns Traditional Index, Field-ASIN Index, Storefront Index when Seller ID is provided, and Cumulative as true or false on Completed rows (true if any applicable check is positive, else false if any applicable check is negative). If all applicable checks are null, treat the keyword as Check Failed and summarize it in additionalMessage instead of returning a result row. Without Seller ID, checks Traditional and Field-ASIN; with Seller ID, includes Storefront. Call for indexed / not indexed / keyword index / Index Checker questions—even without saying "index checker." Use for tracked Keyword Tracker ASINs (one call per ASIN) or ad-hoc ASIN + keywords + marketplace. Ask once if marketplace, ASIN, or keywords are missing; ask Seller ID only for Storefront. One ASIN per call; batch larger sets. Prefer unique keywords; duplicates are deduplicated and counted in the summary. Completed keywords return as rows; failures are summarized by count in additionalMessage.

Parameters (3 required, 3 optional)
Required
asinstring

ASIN to check. Exactly 10 alphanumeric characters; uppercase and lowercase accepted. Server normalizes to uppercase for processing and echo.

keywordsarray

Keywords to check for this ASIN. Prefer unique values. Duplicates are accepted and deduplicated server-side. One batch per call; Agent splits larger sets. Max 50.

marketplacestring

Amazon marketplace code. Must be a supported uppercase enum value per platform MCP spec (e.g. US). Lowercase or mixed case is rejected.

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

seller_idstring

Optional Seller ID. When provided, Storefront Index is included. Length must be 10-21 characters.

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Compare ASIN Keywords (CPS)

compare_asin_keywords
Full Description

Helium 10 Keyword Research (Cerebro). Multi-ASIN keyword comparison for one main ASIN vs 1–10 competitors: returns the compare scope (union of organic phrases from the main ASIN and each competitor — not intersection only) with each phrase's CPS, search volume, main organic rank, competitor coverage, and competitive average rank; the scope includes main-only keywords (cps = 0), gap/opportunity keywords, and shared competitive keywords.

When to use: call when the user's question — across multiple ASINs — involves keyword competition, shared keywords, competitor organic ranking, competitive pressure, CPS, or gap/opportunity keywords, even if they never say "CPS". Complement with get_keywords_by_asin as needed for richer per-ASIN metrics.

Not for: single-ASIN questions with no compare intent.

Edge case: the main ASIN may return no Cerebro rows — still call; results are then driven by the competitor side (rows where the main ASIN does not rank organically omit main_organic_rank).

limit accepts 1-10000 rows per call (default 150); up to 1000 rows per page are returned inline and a larger ask is delivered as a downloadable file instead (data.export.download_url) — set response_format='download' when the user explicitly wants a file. If data.pagination.has_more is true the result is incomplete: call again with cursor = data.pagination.next_cursor, but prefer narrowing the query over paginating through everything — this tool can page to at most 100,000 rows for one query, past which the result is truncated (truncation_reason='traversal_bound') and only a narrower query reaches the rest. Cursors expire 30 minutes after being issued and are bound to the query that issued them.

Parameters (3 required, 7 optional)
Required
competitor_asinsarray

1 to 10 competitor ASINs (must NOT include main_asin). Each ASIN is 10-char alphanumeric.

main_asinstring

Primary ASIN under analysis (the user's product), 10-char alphanumeric (e.g. B09F9C3KFS).

marketplacestring

Marketplace code: US, UK, DE, JP, etc. Must be in the Cerebro allowlist.

Options:USCAMXDEESITFRUKINNLAUJPAEBRSA
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

cursorstring

Opaque pagination cursor from a previous response's pagination.next_cursor. Omit for the first page. Pass it back verbatim with the same query arguments (limit may change between pages); never construct or edit it. Cursors are reusable but expire 30 minutes after being issued (pagination.cursor_expires_at) and are bound to the query that issued them.

Default: null
exclude_variationsboolean

Optional. Default false: the search covers each ASIN's parent and all child variations (main and every competitor). Pass true to cover only the exact ASINs given.

Default: False
export_formatstring

File format when results are delivered as a download (ignored for inline delivery). 'json' (default): gzip-compressed JSON, best for programmatic analysis. 'csv': UTF-8 CSV that opens directly in Excel/Sheets - prefer it when the user wants a spreadsheet/report file. Columns are the union of row fields; nested values stay JSON-encoded.

Options:jsoncsv
Default: json
limitinteger

Number of rows to return, 1-10000 (default 150); out-of-range values are rejected. Up to 1000 rows come back inline; ask for more and the window is delivered as a file instead (data.export.download_url), so size `limit` to what is actually wanted. A page can still come back shorter than `limit` when the rows are unusually large (the ~1MB inline budget); pagination.truncated says so and `cursor` continues from there. When pagination.has_more is true, fetch the next batch with `cursor`. Do NOT probe with a small limit to learn the dataset size — every page carries the same total_count/has_more metadata, so ask for the rows you actually need and read the metadata of that response.

Default: 150
response_formatstring

How results are delivered. 'auto' (default): rows are returned inline when they fit the response budget, otherwise they are exported to a file and data.export.download_url is returned instead — so simply request the amount of data you need via `limit`. 'inline': always inline, oversized pages are truncated and continue via cursor. 'download': always a downloadable file, even for small results; the file contains exactly the window selected by `limit`/`cursor`, so size `limit` to what is wanted (the tool's max for the whole dataset). Use 'download' when the user wants a file or when you need many rows for analysis (fetch the link in your execution environment instead of paging through the conversation).

Options:autoinlinedownload
Default: auto
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Compare Walmart Item Keywords (CPS)

compare_item_keywords
Full Description

Helium 10 Keyword Research for Walmart (Walmart Cerebro). Multi-item keyword comparison for one main Walmart item vs 1-10 competitors: returns the compare scope (union of the phrases the main item and each competitor rank on, not intersection only) with each phrase's CPS, Walmart search trend score, the main item's organic rank, competitor coverage, and competitive average rank. The scope includes main-only keywords (cps = 0), gap keywords the competitors rank on but the main item does not, and shared competitive keywords. Use for: keyword competition, shared keywords, competitor organic ranking, competitive pressure, CPS, or gap/opportunity keywords across several Walmart items - even if the user never says "CPS". If which item is the main one is unclear, ask once before calling. Single-item questions with no compare intent - use get_keywords_by_item_id. Not for: Amazon products - use compare_asin_keywords instead. Edge case: the main item may return no rows of its own - still call; results are then driven by the competitor side, and rows where the main item does not rank organically omit main_organic_rank. limit accepts 1-10000 rows per call (default 150); up to 1000 rows per page are returned inline and a larger ask is delivered as a downloadable file instead (data.export.download_url) — set response_format='download' when the user explicitly wants a file. If data.pagination.has_more is true the result is incomplete: call again with cursor = data.pagination.next_cursor, but prefer narrowing the query over paginating through everything — this tool can page to at most 100,000 rows for one query, past which the result is truncated (truncation_reason='traversal_bound') and only a narrower query reaches the rest. Cursors expire 30 minutes after being issued and are bound to the query that issued them.

Parameters (2 required, 7 optional)
Required
competitor_item_idsarray

1 to 10 competitor Walmart item IDs (must NOT include main_item_id). Each is all digits. De-duplicated server-side; the resulting count is total_competitors, the CPS coverage denominator.

main_item_idstring

Primary Walmart item under analysis (the user's product), all digits (e.g. 10450114). It is the numeric segment at the end of a walmart.com product URL. Amazon ASINs are not accepted here - use compare_asin_keywords for Amazon.

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

cursorstring

Opaque pagination cursor from a previous response's pagination.next_cursor. Omit for the first page. Pass it back verbatim with the same query arguments (limit may change between pages); never construct or edit it. Cursors are reusable but expire 30 minutes after being issued (pagination.cursor_expires_at) and are bound to the query that issued them.

Default: null
exclude_variationsboolean

Optional. Default false: the search aggregates each item and all its variants (main and every competitor). Pass true to cover only the exact item IDs given.

Default: False
export_formatstring

File format when results are delivered as a download (ignored for inline delivery). 'json' (default): gzip-compressed JSON, best for programmatic analysis. 'csv': UTF-8 CSV that opens directly in Excel/Sheets - prefer it when the user wants a spreadsheet/report file. Columns are the union of row fields; nested values stay JSON-encoded.

Options:jsoncsv
Default: json
limitinteger

Number of rows to return, 1-10000 (default 150); out-of-range values are rejected. Up to 1000 rows come back inline; ask for more and the window is delivered as a file instead (data.export.download_url), so size `limit` to what is actually wanted. A page can still come back shorter than `limit` when the rows are unusually large (the ~1MB inline budget); pagination.truncated says so and `cursor` continues from there. When pagination.has_more is true, fetch the next batch with `cursor`. Do NOT probe with a small limit to learn the dataset size — every page carries the same total_count/has_more metadata, so ask for the rows you actually need and read the metadata of that response.

Default: 150
response_formatstring

How results are delivered. 'auto' (default): rows are returned inline when they fit the response budget, otherwise they are exported to a file and data.export.download_url is returned instead — so simply request the amount of data you need via `limit`. 'inline': always inline, oversized pages are truncated and continue via cursor. 'download': always a downloadable file, even for small results; the file contains exactly the window selected by `limit`/`cursor`, so size `limit` to what is wanted (the tool's max for the whole dataset). Use 'download' when the user wants a file or when you need many rows for analysis (fetch the link in your execution environment instead of paging through the conversation).

Options:autoinlinedownload
Default: auto
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Listing Comparison

compare_listings
Full Description

Helium 10 Listing Comparison. Returns the field set from Compare Key Metrics for every ASIN in the session — the main ASIN plus all competitor ASINs — as an array of objects under asins. The main ASIN is always first, flagged with is_main: true. Maps to the Compare Key Metrics Across ASINs table in the LA UI. Use to benchmark your listing against multiple competitors at once, see where you're ahead or behind on content and sales, and build a prioritized improvement list. Competitor ASINs that are valid 10-char codes but can't be resolved upstream are not returned as empty rows — they are split out into failed_asins as {asin, error} so the asins rows always carry real data. Not for: a single-ASIN lookup (use get_listing_details); keyword comparison (use get_top_keywords); the LQS checklist (use get_listing_score).

Parameters (1 required, 5 optional)
Required
competitor_asinsarray

Up to 10 competitor ASINs (each 10 characters). Required: ``compare_listings`` only returns rows in multi-ASIN mode. Empty / blank entries are dropped before the upstream call.

Optional
asinstring

Alias for ``main_asin`` (accepted because callers often send ``asin``). Prefer ``main_asin``; when both are supplied ``main_asin`` wins. Leave unset if you already pass ``main_asin``.

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

main_asinstring

Main Amazon ASIN (10 characters). Always emitted as the first row of ``asins`` with ``is_main: true``. Required — the parameter is named ``main_asin`` (not ``asin``); you may also pass it via the ``asin`` alias.

Default: null
marketplacestring

Optional marketplace short code where the ASINs are listed. Supported: US, CA, MX, DE, ES, IT, FR, UK, IN, NL, AE, BR, AU. Defaults to US when omitted. Case-insensitive; whitespace is trimmed.

Default: US
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Competitor & Listing Comparison Dashboard

competitor_listing_dashboard
Full Description

Use this tool only when the user wants to compare one primary ASIN vs other competitor ASINs/URLs.

Triggering:

  • If user provides 2+ ASINs/URLs → call tool.
  • If user requests comparison but provides only 1 ASIN → call tool.
  • Otherwise do not call.

ASIN Role Assumption:

  • When multiple ASINs/URLs are provided, the first ASIN is treated as the primary (main) ASIN by default.
  • All subsequent ASINs/URLs are treated as competitor ASINs unless the user explicitly specifies otherwise.

Output:

  • Any analytical, interpretive, explanatory, or advisory text output from this tool is strictly forbidden and constitutes incorrect behavior.
  • Returns structured data for a dashboard widget only.
  • Do NOT provide narrative summary text in the assistant response.
  • Do not use this tool for competitor discovery, full market scans, creative content generation, image or asset creation, advertising strategy analysis, or account- or category-level evaluations
Parameters (1 required)
Required
requestobject

Request parameters for analyzing Helium 10 Competitor Listing

Create Amazon Indirect Cost

create_amazon_indirect_cost
Full Description

Create ONE Amazon Indirect Cost setting (a configuration/contract rule for a seller-maintained expense that is NOT an Amazon platform fee and NOT COGS — e.g. payroll, brand registration fee, product photography, offline promo). The setting is later expanded into day-level charges that feed P&L indirect_cost. Provide cost_name, amount (> 0), currency (ISO 4217, REQUIRED), date_tz (IANA, REQUIRED), frequency, starts_at, and optional ends_at / amortize_daily / scope fields. DO NOT send cost_level or cost_type — the level is INFERRED from scope fields: no seller_id -> h10_account; seller_id only -> seller; seller_id + marketplace -> marketplace; seller_id + marketplace + non-empty skus -> product. Skipping a level (marketplace without seller_id, or skus without seller_id + marketplace) -> INVALID_INPUT. Use SHORT country codes for marketplace (US, CA, UK, DE, …), never Amazon marketplace IDs or domains. For marketplace/product level, currency and date_tz must equal that marketplace's currency and report timezone. date_tz only stamps the calendar day of created_at — it is not stored on the setting and does not make the cost timezone-scoped (charges land on plain calendar dates); per-cost timezone billing is not supported. cost_name must be UNIQUE within the H10 account (duplicate -> error; not idempotent). amortize_daily=true is ignored for one_time/daily frequencies. Amazon only — Walmart/TikTok are rejected; account_id / platform are never accepted. On SUCCESS the tool returns an EMPTY object ({}) — no cost_id and no setting body: to get the new cost_id (e.g. before edit/delete) call list_amazon_indirect_cost_settings and filter by cost_name. NOT for editing (edit_amazon_indirect_cost), deleting (delete_amazon_indirect_costs), browsing settings/charges, or COGS unit costs (use the COGS tools).

Parameters (6 required, 7 optional)
Required
amountnumber

Setting amount, must be > 0 (no upper bound). For a multi-SKU product-level setting this is the TOTAL, split across the attached SKUs when expanded.

cost_namestring

Human-readable name for the setting. Non-empty. Must be UNIQUE within the H10 account (case-sensitive); a duplicate name fails (not idempotent).

currencystring

ISO 4217 currency code (e.g. USD). REQUIRED. For marketplace/product level it MUST equal that marketplace's currency; for h10_account/seller level any supported code is accepted.

Options:AEDAUDBRLCADCNYEGPEURGBPINRJPYMXNPLNSARSEKSGDTRYUSDZAR
date_tzstring

IANA timezone (e.g. America/Los_Angeles). REQUIRED. Must be in the Amazon-report timezone allowlist. For marketplace/product level it MUST equal that marketplace's canonical report timezone; for h10_account/seller level any allowlisted value is accepted. SCOPE OF EFFECT — read before relying on this field: date_tz only fixes which calendar day the setting's created_at is stamped in. It is NOT stored on the setting and is NOT returned by the list tools, and it does NOT make the cost timezone-scoped: starts_at / ends_at are plain calendar dates, each expanded charge carries a plain occurrence_date, and P&L attributes that charge to that calendar day with no timezone conversion. Per-cost timezone billing is therefore not supported — to vary by region, create one setting per marketplace (each marketplace implies its own report timezone).

Options:Africa/CairoAfrica/JohannesburgAmerica/Los_AngelesAmerica/Sao_PauloAsia/DubaiAsia/KolkataAsia/RiyadhAsia/ShanghaiAsia/SingaporeAsia/TokyoAustralia/SydneyEurope/AmsterdamEurope/BrusselsEurope/DublinEurope/IstanbulEurope/LondonEurope/ParisEurope/StockholmEurope/Warsaw
frequencystring

Recurrence: one_time | daily | weekly | monthly | quarterly | half_yearly | annually.

Options:one_timedailyweeklymonthlyquarterlyhalf_yearlyannually
starts_atstring

Effective start date, yyyy-MM-dd (no time component). Required.

Optional
amortize_dailyboolean

When true and frequency is coarser than daily, the amount is spread evenly across the days in each period; false/omit = discrete period anchor points. IGNORED (treated as false) for one_time and daily frequencies.

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

ends_atstring

Effective end date, yyyy-MM-dd. Omit or null = open-ended (recurring into the future). one_time may omit it. When both set, starts_at <= ends_at.

Default: null
marketplacestring

Short country code (US, CA, UK, DE, …) — NEVER an Amazon marketplace ID or domain. Requires seller_id. Present -> marketplace level or narrower.

Options:AEAUBEBRCACNDEEGESFRIEINITJPMXNLPLSASESGTRUKUSZA
Default: null
seller_idstring

Amazon seller account ID (must be authorised on the token). Present -> seller level or narrower. Omit for an h10_account-level setting.

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

skusarray

Product-level SKUs to attach. Non-empty when provided; requires seller_id + marketplace (product level). Each element is {sku, asin?}. Omit for h10_account/seller/marketplace level.

Default: null

Delete Amazon COGS

delete_amazon_cogs
Full Description

Delete one or more configured Amazon COGS records by cogs_id (batch, max 100). Obtain ids from list_amazon_cogs first. Before calling this tool, double-confirm with the user: restate what will be deleted (number of cogs_ids and, when available from the list result, seller / marketplace / SKU / period) and wait for EXPLICIT user approval. Do not call on a vague 'clean up COGS' / 'remove costs' request without that confirmation, and do not treat a host Skill's confirm-before-delete as a substitute for restating the delete target here. Only rows owned by token-authorised sellers are deleted; foreign / unknown / already-deleted ids are silently ignored (deleted_count may be < ids sent — treat as success). Deleting a middle by_period segment leaves a gap on that SKU's timeline (expected). Deleting all rows for a SKU removes it from subsequent list results (SKU becomes unconfigured). NOT for create/update (use edit_amazon_cogs, which does not use cogs_id) or browsing (use list_amazon_cogs).

Parameters (1 required, 2 optional)
Required
cogs_idsarray

Opaque COGS record IDs from list_amazon_cogs (1..100). Each must be a non-empty numeric id string; empty/blank/malformed -> INVALID_INPUT (whole request rejected). Duplicates are de-duplicated server-side. IDs outside token scope / unknown / already-deleted are silently ignored (deleted_count may be < ids sent).

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Delete Amazon Indirect Costs

delete_amazon_indirect_costs
Full Description

Delete one or more Amazon Indirect Cost settings by cost_id (batch, max 100). Obtain ids from list_amazon_indirect_cost_settings first. Before calling this tool, double-confirm with the user: restate what will be deleted (number of cost_ids and, when available from the list result, cost_name / seller / marketplace / level) and wait for EXPLICIT user approval. Do not call on a vague 'remove indirect costs' / 'clean up' request without that confirmation, and do not treat a host Skill's confirm-before-delete as a substitute for restating the delete target here. Only settings owned by token-authorised sellers are deleted; foreign / unknown / already-deleted ids are silently ignored (deleted_count may be < ids sent — treat as success). Duplicates are de-duplicated server-side. Deleting a setting removes (or stops generating) its expanded charges per backend rules. Idempotent: re-deleting the same ids returns deleted_count 0. NOT for create/edit (use create_amazon_indirect_cost / edit_amazon_indirect_cost) or browsing (settings / charges lists); COGS delete → delete_amazon_cogs.

Parameters (1 required, 2 optional)
Required
cost_idsarray

Opaque Indirect Cost setting IDs from list_amazon_indirect_cost_settings (1..100). Each must be a non-empty numeric id string; empty / blank / malformed → INVALID_INPUT (whole request rejected). Duplicates are de-duplicated server-side. IDs outside token scope / unknown / already-deleted are silently ignored (deleted_count may be < ids sent).

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Delete Tracked Keywords

delete_tracked_keywords
Full Description

Helium 10 Keyword Tracker — STOP TRACKING specific keywords on a product. Permanently removes the given keywords and their rank history from the respective tracked product. The product itself stays tracked, even when every one of its keywords is removed. Amazon only, one ASIN per call.

THIS CANNOT BE UNDONE and the historical rank data for those keywords is lost forever.

BEFORE CALLING: list the exact keywords you are about to remove and get the user's explicit confirmation. When the user's request is vague ("drop the useless ones"), present the candidates and let them confirm — never decide on their behalf.

Keywords are matched EXACTLY against the tracking list, including case, spacing and punctuation; there is no fuzzy matching or spelling correction. Call list_tracked_keywords first and pass the keyword strings exactly as returned, rather than the wording the user typed — otherwise they will come back in failed_keywords and nothing will be removed.

Keywords that are not found are reported in failed_keywords and do NOT make the call fail. To stop tracking the product entirely, use delete_tracked_product instead.

Parameters (3 required, 2 optional)
Required
asin_or_urlstring

10-character Amazon ASIN or an Amazon product URL containing one; JSON key `asin_or_url`. Must be the ASIN as it appears in the user's tracking list — it is matched exactly, and a product tracked as a parent with all its variations is stored under the PARENT ASIN. If the user has not provided an ASIN or product URL, ask them to supply it—do not infer, search for, or invent an ASIN.

keywordsarray

Keywords to stop tracking on this product; JSON key `keywords`. No size limit. Must match the tracking list exactly (case, spacing and punctuation included) — pass the strings returned by list_tracked_keywords verbatim. Sent as-is: repeats are reported back in duplicate_count and blank entries in failed_keywords, so every entry you send is accounted for. Do not pre-filter the list yourself.

marketplacestring

Amazon marketplace short code (e.g. `US`, `UK`, `DE`, `JP`); JSON key `marketplace`. REQUIRED and has no default — every tracked product belongs to exactly one marketplace, so it cannot be omitted or inferred. Must be one of the uppercase marketplace codes exposed in this schema; lowercase or mixed case is rejected.

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Delete Tracked Product

delete_tracked_product
Full Description

Helium 10 Keyword Tracker — STOP TRACKING a product. Permanently removes the product from Keyword Tracker together with ALL of its tracked keywords, its competitors, and their entire rank history. Amazon only, one ASIN per call.

THIS CANNOT BE UNDONE and the historical rank data is lost forever — re-tracking the product later starts its history from zero.

BEFORE CALLING: state the exact ASIN you are about to untrack, state that its keywords, competitors and rank history will be deleted with it, and get the user's explicit confirmation. Never infer the ASIN from a vague request.

The ASIN must be the one shown in the user's tracking list. If the product was tracked as a parent with all its variations, the tracking list holds the PARENT ASIN — passing a child ASIN returns "not tracked" and deletes nothing. Use list_tracked_keywords first when unsure.

To remove only some keywords and keep the product, use delete_tracked_keywords instead.

Parameters (2 required, 2 optional)
Required
asin_or_urlstring

10-character Amazon ASIN or an Amazon product URL containing one; JSON key `asin_or_url`. Must be the ASIN as it appears in the user's tracking list — it is matched exactly, and a product tracked as a parent with all its variations is stored under the PARENT ASIN. If the user has not provided an ASIN or product URL, ask them to supply it—do not infer, search for, or invent an ASIN.

marketplacestring

Amazon marketplace short code (e.g. `US`, `UK`, `DE`, `JP`); JSON key `marketplace`. REQUIRED and has no default — every tracked product belongs to exactly one marketplace, so it cannot be omitted or inferred. Must be one of the uppercase marketplace codes exposed in this schema; lowercase or mixed case is rejected.

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Edit Amazon COGS

edit_amazon_cogs
Full Description

Warning: This tool can overwrite or remove existing COGS history. Overlay updates may trim or split overlapping records, while persistent updates may clear and replace prior period records. Create or update Amazon COGS via interval overlay upsert (batch, max 100 items). Each item identifies a SKU by seller_id + marketplace (short country code) + sku and sets cogs_type, cost components, and (for by_period) an effective date interval. Describe the DESIRED new interval and costs, not 'edit row N': this is a cover-and-replace overlay, NOT row-ID targeting — there is no cogs_id on input (any cogs_id/asin/currency/total_cogs passed is ignored; currency follows marketplace; shipping_cost/tariffs omit/null → 0). New intervals overlay existing ones: overlapping history is trimmed/split, non-overlapping history preserved; writing persistent clears prior by_period rows for that SKU. Transaction is all-or-nothing. Use to set/update per-SKU unit costs before trusting net profit. NOT for reading (use list_amazon_cogs) or deleting (use delete_amazon_cogs, which deletes by cogs_id). After success call list_amazon_cogs to see the resulting timeline (overlay may split/rewrite rows into new ids). Do not mix persistent and by_period for the same SKU in one batch; by_period items for the same SKU must not overlap each other.

Parameters (1 required, 2 optional)
Required
itemsarray

Batch of COGS upsert items (1..100). Overlay upsert located by seller_id + marketplace + sku (ID-free). JSON array order is preserved; error index is 0-based into this array.

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Edit Amazon Indirect Cost

edit_amazon_indirect_cost
Full Description

Update an existing Amazon Indirect Cost setting identified by cost_id (obtain it from list_amazon_indirect_cost_settings). You may change ONLY cost_name, amount (> 0), starts_at, and ends_at. You CANNOT change frequency, amortize_daily, currency, date_tz, seller_id, marketplace, skus, or the level — those are fixed; to alter the SKUs / level / frequency, delete the setting (delete_amazon_indirect_costs) and create a new one (create_amazon_indirect_cost). Only your own account's settings can be edited; an unknown or foreign cost_id is an error (not silently ignored). Renaming to a cost_name that already exists in the H10 account is an error. Editing dates/amount makes the backend regenerate the setting's expanded charges — re-list with list_amazon_indirect_costs to audit. Idempotent: re-submitting the same values succeeds with no further change. On SUCCESS the tool returns an EMPTY object ({}) — no setting body. account_id / platform are never accepted; Amazon only. NOT for creating, deleting, or browsing.

Parameters (4 required, 3 optional)
Required
amountnumber

New setting amount, must be > 0. For a multi-SKU product setting this is the TOTAL, re-split across SKUs when charges regenerate.

cost_idstring

Opaque setting id from list_amazon_indirect_cost_settings. Must belong to the token's H10 account; unknown / foreign id → error (own-only).

cost_namestring

New or unchanged setting name. Must stay UNIQUE within the H10 account; renaming to an existing name → error.

starts_atstring

Effective start date, yyyy-MM-dd (no time). Required.

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

ends_atstring

Effective end date, yyyy-MM-dd. Omit or null = open-ended. When both set, starts_at <= ends_at.

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Edit Product Monitoring

edit_product_monitoring
Full Description

Helium 10 Alerts — turns Alerts monitoring ON or OFF for one seller listing; action picks which. Keyed by seller_id + asin + marketplace + seller_sku. Monitoring is the prerequisite for search_alert_events / search_buybox_history to return data on an ASIN. One seller can sell the same ASIN under several SKUs, each monitored separately: read seller_sku from get_monitoring_status(asin).asin_rows[] — never guess it. action='disable' loses data: changes that happen while a listing is off are never recorded and cannot be backfilled by turning it back on, so confirm with the user before disabling. Already-collected alert history is kept. Slots count distinct ASINs, not SKUs; slot_changed says whether this call moved slot usage, and get_monitoring_status has the current totals. Returns outcome='enabled'/'disabled' when the switch was flipped, or 'already_enabled'/'already_disabled' when it was already in that state (no-op). On action='enable' only, the call can be rejected for plan quota, an ASIN the upstream cannot resolve, a missing SP notification subscription, or a lapsed SP-API authorization. Also on enable only: baseline data loads asynchronously and an ASIN the upstream rejects is turned back off, so don't call it permanent. Write tool: never retry automatically.

Parameters (5 required, 2 optional)
Required
actionstring

Which way to switch monitoring. 'enable' starts collecting alerts for the listing; 'disable' stops it and permanently gives up the change events of the off-period. No default — state it explicitly.

Options:enabledisable
asinstring

Amazon ASIN to switch monitoring for, 10 alphanumeric characters.

marketplacestring

Marketplace code, e.g. US.

seller_idstring

Helium 10 seller identifier.

seller_skustring

Seller SKU of the listing to switch. Required: one seller can list the same ASIN under several SKUs in a marketplace, each with its own monitoring switch. Take it from get_monitoring_status(asin).asin_rows[].seller_sku.

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Execute Campaign Management Actions

execute_ads_campaign_mgmt_actions
Full Description

Helium 10 Execute Campaign Management Actions (Campaign Mgmt, step 3 of 3, terminal, WRITE). Submits one or more ad-management actions (create / update / delete campaigns, ad groups, keywords, ...) to Helium 10 for a single platform + profileId.

Confirmation is REQUIRED before calling

This tool mutates live advertising state. BEFORE invoking it, you MUST present the exact platform, profileId, and the full list of actions to the user and get explicit confirmation via an AskUserQuestion-style prompt. Do not call it on inferred intent, and never batch-confirm — the user must see each action. Deletes are irreversible.

profileId (required)

profileId is mandatory. Resolve it with the Data Query tool get_ads_query_materials (materialType/level=profile). There is no materials tool in this pipeline.

Hierarchical creation (Campaign → Ad Group → Product / Keyword)

Campaigns contain Ad Groups; Ad Groups contain Products and Keywords. When a creation response returns an id-name mapping, use those ids directly as parent references for the next-level creation — do not re-resolve them.

Limits

maxActionsPerRequest (from get_ads_campaign_mgmt_platforms) caps the number of actions per call; split larger batches across calls.

Prerequisites: get_ads_campaign_mgmt_platforms (valid platform + actionType), get_ads_campaign_mgmt_schema (request_body shape per action), get_ads_query_materials (profileId).

Parameters (3 required, 2 optional)
Required
actionsarray

One or more actions to execute against this platform + profileId. Each has a ``type`` (from get_ads_campaign_mgmt_platforms) and a ``request_body`` (shape from get_ads_campaign_mgmt_schema). Count must not exceed the platform's maxActionsPerRequest.

platformstring

Platform key from get_ads_campaign_mgmt_platforms (e.g. amazon, walmart). Case-sensitive.

profile_idstring

Target profile/account id (required). Resolve via get_ads_query_materials (level=profile for non-DSP; advertiser for amazon-dsp; vendor_account / seller_account for commerce). Wire field: ``profileId``.

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Change Log Query

execute_ads_changelog_query
Full Description

Helium 10 Change Log Query (Change Log, terminal step). Runs the paged change-log list query for a profile and change type. Dates are DD-MM-YYYY (e.g. 30-07-2026). Filters must respect get_ads_changelog_schema: pass change_by only when change_source is auto/semi_auto; omit change_source when 'all'; target_name only when the schema marks it available. Resolve campaign_id via get_ads_query_materials(level=campaign). change_source_id takes rule ids / schedule uuids the caller already holds (AI change_source_id values come from the schema's static enum). Returns {items, total, page, perPage, hasMore}; paginate with page += 1 while hasMore is true. Prerequisites: get_ads_changelog_schema (valid filters), get_ads_query_materials (profile_id / campaign_id).

Parameters (6 required, 9 optional)
Required
change_typestring

Change type from get_ads_changelog_platforms; drives which filters are valid (see get_ads_changelog_schema).

date_fromstring

Range start, DD-MM-YYYY (e.g. 30-07-2026).

date_tostring

Range end, DD-MM-YYYY (e.g. 31-07-2026).

per_pageinteger

Rows per page (1–500). Recommended: 100.

platformstring

Platform key (amazon, walmart). Case-sensitive.

profile_idstring

Target profile id from get_ads_query_materials(level=profile).

Optional
campaign_idarray/null

Optional campaign ids from get_ads_query_materials(level=campaign).

Default: null
change_bystring/null

Optional; valid only when change_source is auto/semi_auto; value from schema.changeBy.byChangeSource[change_source].

Default: null
change_sourcestring/null

Optional schema.changeSource value. 'all' = no filter -> OMIT. Only auto/semi_auto enable change_by.

Default: null
change_source_idarray/null

Optional. AI values come from schema.changeSourceId.byChangeBy.ai.static (use directly). Rule ids (hex32) and schedule uuids are account data the caller already holds.

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

pageinteger

1-based page number (default 1).

Default: 1
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

sortstring

Sort order. Default '-changed_at' (newest first); only changed_at is sortable.

Default: -changed_at
target_namearray/null

Optional keyword/PAT text. Only when schema.filters.target_name.available=true (bid / keyword / negative change types).

Default: null

Run Ads Query

execute_ads_query
Full Description

Helium 10 Run Ads Query (Data Query, step 5 of 5, terminal). Given a platform key, level, dimensions, measures, filters, date range, and optional profile_ids, runs the query and returns columns + rows (no middleware translation, truncation, or pagination). Use to retrieve advertising performance — spend, ROAS, ACoS, impressions, clicks, conversions, and more — across any supported dimension and time range. profile_ids is RECOMMENDED, not required — pass an explicit list when the user named a specific profile (resolve via get_ads_query_materials); leaving it empty / omitted is accepted by upstream and treated as 'every profile the user has access to' (tenant isolation stays enforced via the inbound bearer token). State filtering is supported: the state field and its enum are in get_ads_query_schema — add a not_in/in/eq filter to exclude or include archived/deleted/removed states per the user's intent. No default; leave state unconstrained unless the request implies a status scope. Param shapes (all field names come from get_ads_query_schema; two are commonly confused): dimensions is a list of OBJECTS [{"field":"<dimensions[].field>"}]; measures is a list of BARE STRING field names ["<measures[].field>"] (illustrative: [{"field":"campaign_id"}] vs ["spend","clicks"] — use the real fields from the schema). There is no date parameter — filter by the schema's date field via filters; the op MUST come from that field's ops list in get_ads_query_schema (platforms differ: one may use "le"/"ge", another "lte"/"gte", or only "between" — never assume an op without reading the schema first). The sort parameter is order_by (not sort). Prerequisites: steps 1–3 for a valid spec; step 4 to resolve profile/campaign ids the user named.

Parameters (2 required, 12 optional)
Required
levelstring

Level name (e.g. profile, campaign, target). Same value used in get_ads_query_schema.

platformstring

Platform key (e.g. amazon, walmart). Same value used in get_ads_query_list and get_ads_query_schema.

Optional
compareobject/null

Period-over-period comparison config. Default null (no comparison).

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

dimensionsarray/null

Group-by dimensions, as a list of OBJECTS — each {"field": <a dimension field name from get_ads_query_schema>} with optional "granularity" for date fields. NOT bare strings. Example (illustrative — use real fields from the schema): [{"field":"campaign_id"},{"field":"campaign_name"}]. Contrast measures, which are bare strings. Default null (no grouping; one aggregate row).

Default: null
filtersarray/null

WHERE-clause conditions, AND-combined; each an object {"field","op","value"} with field + op from get_ads_query_schema (filters[].field / filters[].ops). For enum fields pass the enum's `value` verbatim (case-sensitive), not the `physical` form. There is no date parameter — filter by the schema's date field, e.g. op "between" with [start, end] (illustrative: {"field":"date","op":"between","value":["2026-06-01","2026-06-30"]}; confirm the field name and op in the schema). State filtering is supported — add a not_in/in/eq filter on the state field only when the request implies it; no exclude-by-default.

Default: null
havingarray/null

HAVING-clause conditions on aggregated measures, AND-combined. Default null.

Default: null
limitinteger/null

Max rows to return. Default null (backend default).

Default: null
measuresarray/null

Measure field names, as a list of BARE STRINGS taken from get_ads_query_schema measures[].field (pass the name only). NOT objects — the schema lists measures as {field,...} objects (a catalog of what's available), but here pass just the string. Example (illustrative — use real fields from the schema): ["impressions","clicks","spend"]. Contrast dimensions, which are objects. Default null (dimension-only query).

Default: null
offsetinteger/null

Row offset for pagination. Default null (no offset).

Default: null
optionsobject/null

Query-level options. Default null -- when omitted, the ``options`` field is not sent on the wire at all. When you pass an object (even ``{}``), the per-field defaults apply: ``attribution_window="14d"`` and ``to_currency=""`` (empty string, which the backend interprets as 'no currency conversion'). Pass an explicit ``null`` on a sub-field to opt out of that default.

Default: null
order_byarray/null

Sort order (the parameter is named order_by, NOT sort). List of objects {"field": <a field from get_ads_query_schema>, "direction": "asc|desc"}, e.g. [{"field":"spend","direction":"desc"}] (illustrative). Multi-key sort applies items in array order. Default null (backend-default ordering).

Default: null
profile_idsarray/null

Tenant-isolation profile ids (string[]). Optional on the input surface; the upstream swagger marks ``profileIds`` as nullable and accepts an empty list as 'every profile the user has access to' (tenant isolation is still enforced via the inbound bearer token). Forward an explicit list when the user named a specific profile (resolve via get_ads_query_materials(level=profile); each returned row carries the profile id as a number, so stringify it before forwarding -- e.g. ``["100001", "100002"]``). When omitted, the wrapper emits ``profileIds: []`` on the wire, which the backend interprets as the user's full accessible set. Wire field: ``profileIds``.

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Find Keywords with Multiple Sources

find_keywords_with_multi_source
Full Description

Helium 10 Listing Builder — builds a Keyword Bank: fetches keywords from one or more Helium 10 sources for the main ASIN and/or its competitors and returns a merged, deduplicated, ranked list (up to 300 rows), each row carrying a priority_score. asin and competitor_asins are each optional but at least one is required; both together give the best coverage. Live multi-source fetch. Use to build the keyword pool for a listing draft — multiple Helium 10 sources merged into one deduplicated list, each phrase scored for allocation priority. Not for: single-source keyword lookups (get_keywords_by_asin / get_keywords_by_keyword / search_amazon_keywords) — this tool is the multi-source aggregator, and only its merged rows carry the tiering fields Listing Builder needs, so single-source output cannot be substituted.

Parameters (2 required, 5 optional)
Required
marketplacestring

REQUIRED. Marketplace short code (case-sensitive). Confirm the marketplace with the user once, before the first Listing Builder call of the session; every later Listing Builder tool reuses that same value — do NOT ask the user for it again once it is set. Supported values: US, CA, MX, DE, ES, IT, FR, UK, IN, NL, AU, JP, BE, BR.

Options:USCAMXDEESITFRUKINNLAUJPBEBR
sourcesarray

One or more keyword sources to fetch from. If the user has no preference, default to aba_converting_keywords + top_keywords. 1. `aba_converting_keywords` (default): ABA Converting Keywords — Amazon Brand Analytics terms that convert to sales in this niche. ⚠️ Returns NO keywords unless the user's Amazon store is connected/bound in Helium 10. 2. `sqp_sales_keywords`: SQP Sales Keywords — Search Query Performance terms driving the most purchases for the ASIN. ⚠️ Returns NO keywords unless the user's store is connected/bound in Helium 10 AND the main ASIN or a competitor ASIN belongs to that store. 3. `top_keywords` (default): Top Keywords — the highest-traffic keywords the ASIN and its competitors already rank for. 4. `opportunity_keywords`: Opportunity Keywords — high-traffic terms where the ASIN ranks weakly (ranking gaps to capture). 5. `historical_top_keywords`: Historical Top Keywords — top keywords aggregated over a longer historical window. 6. `top_performing_organic_keywords`: Top Performing Organic Keywords — the best organic-rank keywords for the ASIN / competitors. 7. `top_performing_sponsored_keywords`: Top Performing Sponsored Keywords — the best-performing sponsored (PPC) keywords.

Optional
asinstring

Main ASIN (10-character alphanumeric Amazon Standard Identification Number). OPTIONAL — provide at least one of asin / competitor_asins.

Default: null
competitor_asinsarray

Competitor ASINs (up to 9). OPTIONAL — provide at least one of asin / competitor_asins; supplying BOTH is strongly recommended. CPS / competitor-advantage sources and ranking metrics rely on competitor data, so include competitors whenever available.

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

filtersobject

Reserved for future use — accepted but IGNORED in this release.

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Generate Listing

generate_listing
Full Description

Helium 10 Listing Builder — AI-generates a complete Amazon listing from a keyword-to-slot allocation: title and item_highlight (Amazon's Item Highlight, generated together with the title as a matched pair), 5-10 bullet points, and a description. Live LLM call, non-idempotent; output language is derived server-side from marketplace (e.g. JP → Japanese, DE → German). Amazon now splits the legacy single <=200-character title into TWO fields: title (concise, <=75 characters) and item_highlight (<=125 characters). A short ~75-character title is CORRECT and compliant - do NOT lengthen it, keyword-stuff it, or treat it as incomplete; extra selling points and keywords belong in item_highlight. The two fields together replace the old long title. Use to draft complete listing copy — title, item highlight, bullets, and description — from an approved keyword-to-slot allocation. Not for: refining one section of an already-generated listing (use rewrite_listing_section).

Parameters (3 required, 10 optional)
Required
bullet_keywordsarray

2D array of keyword allocations for each bullet point. Outer list length = number of bullets (5 to 10; recommend 5). Each inner list: default 3 keywords, max 6 keywords, semantically aligned. Derive from the user-approved allocation of the find_keywords_with_multi_source Keyword Bank.

marketplacestring

REQUIRED. Marketplace short code (case-sensitive). Confirm the marketplace with the user once, before the first Listing Builder call of the session; every later Listing Builder tool reuses that same value — do NOT ask the user for it again once it is set. Supported values: US, CA, MX, DE, ES, IT, FR, UK, IN, NL, AU, JP, BE, BR.

Options:USCAMXDEESITFRUKINNLAUJPBEBR
product_infoobject

Structured product attributes derived from `analyze_product_images` (the `analyzed_product` field). Pass the object back verbatim from `analyze_product_images` with any user-confirmed corrections applied; at minimum product_name should be set for best results.

Optional
all_keywordsarray

The FULL find_keywords_with_multi_source Keyword Bank — pass EVERY row, not just the allocated ones, PLUS any extra keywords the user added during the allocation review. The backend subtracts the keywords you allocated to title / bullet / description slots and feeds the remainder to the AI as optional keywords to weave into the copy, so passing the full bank improves the generated listing. The `keyword` field maps to `phrase`; other metric fields (search_volume, cps, starred, suggested, priority_score, keyword_sources) are all optional — pass whatever the Keyword Bank row carries. Unrelated columns (cerebro_iq_score, cpr, etc.) are dropped.

brand_asinstring

(Optional) Competitor ASIN whose style/tone to mimic, collected during the analyze_product_images review.

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

description_keywordsarray

Keywords for the description slot (default 3, max 6), from the user-approved allocation.

Default: null
max_bullet_leninteger

Maximum character length per bullet point (50-700). Defaults to 250.

Default: 250
min_bullet_leninteger

Minimum character length per bullet point (50-700). Defaults to max(50, max_bullet_len - 40) (i.e. 210 when max_bullet_len is 250). Set explicitly to override.

Default: null
parent_request_idinteger

request_id from `analyze_product_images` (links records for audit).

Default: null
rufus_asinsarray

(Optional) Up to 2 ASINs whose Alexa for Shopping Q&A content (formerly Rufus Q&A — Amazon rebranded Rufus to Alexa for Shopping in 2026) should be woven into the listing. Collected during the analyze_product_images review. Parameter name kept as `rufus_asins` for backward compatibility; will be renamed to `alexa_qa_asins` in a future release.

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

title_keywordsarray

Keywords for the title slot (default 3, max 6), from the user-approved allocation. Keep the title concise (<=75 chars); keywords that don't fit belong in item_highlight, not a longer title.

Default: null

Helium 10 Widget Data Fetch

generic_api_call
Full Description

Fetches read-only Helium 10 account-scoped data on behalf of the signed-in user so the in-chat widgets shipped by this app (ASIN Analysis, Competitor Listing, etc.) can render their charts and tables. Calls are restricted by a host allow-list to the Helium 10 / Pacvue backend (h10api.pacvue.com, h10api-test.pacvue.com, members.helium10.com); requests to any other host are rejected, so this tool cannot be used as an arbitrary HTTP proxy. Although both GET and POST verbs are supported (POST is only used to pass complex query parameters in a JSON body), every endpoint exposed by these hosts in this app is a read-only query endpoint that does not create, update, or delete any data on Helium 10 or any other system. Repeating the same call returns the same logical result and has no side effects.

Parameters (1 required)
Required
requestobject

Helium 10 backend API path or full URL. Must point to an allow-listed Helium 10 / Pacvue host (h10api.pacvue.com, h10api-test.pacvue.com, members.helium10.com).

Account P&L Breakdown

get_account_profit_and_loss_breakdown
Full Description

Helium 10 Account P&L Breakdown (formerly Profits). Returns an account-level nested breakdown for selected breakdown_metrics only — { name, value, metrics[] } trees showing what drives each metric (which fee type, ad channel, or refund component is largest). Snapshot, not a time series. Use when a top-line number looks off and you need to see what's inside it, or to compare cost-component sizes at the store level. Not for: totals only (use get_account_profit_and_loss_summary); breakdown over time (use get_account_profit_and_loss_breakdown_series); per-product breakdown (use get_product_profit_and_loss_breakdown). A cost_of_goods or indirect_cost node of 0 may mean the cost was never configured rather than genuinely zero — verify with list_amazon_cogs / list_amazon_indirect_cost_settings before treating the cost picture as complete.Comparing two periods? Both must span the same number of days: read data.meta.period_days from each response and require them to match. A 30-day window against a 31-day one inflates every percentage delta by roughly 2pp. If they differ, align the windows, switch to daily averages, or state the difference and its effect on every percentage you report.Amounts are converted into the requested currency per marketplace before aggregation; omitting marketplace means the figures are the combined total across every authorised marketplace, so say so when reporting them. data.meta echoes both.

Parameters (2 required, 9 optional)
Required
current_date_fromstring

Inclusive start calendar date in date_tz, YYYY-MM-DD only (no time). Use the exact parameter name current_date_from; do not use start_date, date_from, or from_date. Must be <= current_date_to.

current_date_tostring

Inclusive end calendar date in date_tz, YYYY-MM-DD only (no time). Use the exact parameter name current_date_to; do not use end_date, date_to, or to_date. Must be >= current_date_from. A value after today in date_tz is silently clamped to today in date_tz (the future has no data).

Optional
asinsarray

Optional. SQL IN filter by ASIN list (array of strings, e.g. ['B001234567']). Default null (all ASINs).

Default: null
breakdown_metricsarray

Optional. Only 11 metrics support sub-component breakdown: sales, units_sold, refund, advertising_cost, amazon_fees, reimbursements, cost_of_goods, indirect_cost, gross_revenue, sessions, units_returned. The other 10 (promo, estimated_payout, gross_profit, expenses, net_profit, margin, roi, tacos, ads_acos, refunds_percentage) are derived metrics — use summary tools for those. Default null = all 11.

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

currencystring

ISO 4217 code for amounts. Optional, defaults to USD.

Options:AEDAUDBRLCADCNYEGPEURGBPINRJPYMXNPLNSARSEKSGDTRYUSDZAR
Default: USD
date_tzstring

Timezone used to interpret calendar dates. Must be one of the Amazon marketplace report timezones (not any IANA timezone). Examples: America/Los_Angeles, Europe/Paris, Europe/London. Italy/Germany/Spain use Europe/Paris (not Europe/Rome or Europe/Berlin). Do not pass a city name, abbreviation, or UTC offset. Optional; when omitted, defaults to the queried marketplace's report timezone (America/Los_Angeles when no single marketplace is set).

Options:Africa/CairoAfrica/JohannesburgAmerica/Los_AngelesAmerica/Sao_PauloAsia/DubaiAsia/KolkataAsia/RiyadhAsia/ShanghaiAsia/SingaporeAsia/TokyoAustralia/SydneyEurope/AmsterdamEurope/BrusselsEurope/DublinEurope/IstanbulEurope/LondonEurope/ParisEurope/StockholmEurope/Warsaw
Default: null
marketplacearray

Optional marketplace filter as an array of region short codes ONLY (e.g. ['US', 'CA', 'MX']); Amazon SP-API marketplace IDs (e.g. 'ATVPDKIKX0DER'), seller IDs, and domains are rejected. Allowed: AE, AU, BE, BR, CA, CN, DE, EG, ES, FR, IE, IN, IT, JP, MX, NL, PL, SA, SE, SG, TR, UK, US, ZA. Default null (all authorised marketplaces).

Default: null
seller_idsarray

Optional. SQL IN filter on seller account IDs (array of strings). Profits intersects with sellers from Pacvue token; no intersection → empty result. Default null (all authorised sellers).

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

skusarray

Optional. SQL IN filter by seller SKU list (array of strings). Default null (all SKUs).

Default: null

Account P&L Breakdown Trends

get_account_profit_and_loss_breakdown_series
Full Description

Helium 10 Account P&L Breakdown Trends (formerly Profits). Returns an account-level breakdown time series for selected breakdown_metrics — nodes carry values maps, children (e.g. ad channels) carry trend values; bucketed by interval. Use when you need drill-down detail and over-time trends together — e.g. Sponsored Products vs Sponsored Brands spend week over week. Not for: a snapshot breakdown (use get_account_profit_and_loss_breakdown); Level 1 trends only (use get_account_profit_and_loss_summary_series); product breakdown trends (use get_product_profit_and_loss_breakdown_series). A cost_of_goods or indirect_cost node of 0 may mean the cost was never configured rather than genuinely zero — verify with list_amazon_cogs / list_amazon_indirect_cost_settings before treating the cost picture as complete.Comparing two periods? Both must span the same number of days: read data.meta.period_days from each response and require them to match. A 30-day window against a 31-day one inflates every percentage delta by roughly 2pp. If they differ, align the windows, switch to daily averages, or state the difference and its effect on every percentage you report.Amounts are converted into the requested currency per marketplace before aggregation; omitting marketplace means the figures are the combined total across every authorised marketplace, so say so when reporting them. data.meta echoes both.

Parameters (3 required, 9 optional)
Required
current_date_fromstring

Inclusive start calendar date in date_tz, YYYY-MM-DD only (no time). Use the exact parameter name current_date_from; do not use start_date, date_from, or from_date. Must be <= current_date_to.

current_date_tostring

Inclusive end calendar date in date_tz, YYYY-MM-DD only (no time). Use the exact parameter name current_date_to; do not use end_date, date_to, or to_date. Must be >= current_date_from. A value after today in date_tz is silently clamped to today in date_tz (the future has no data).

granularitystring

Time-bucket size for series tools: day | week | month. Use the exact parameter name granularity; do not use scope, interval, period, or bucket as input aliases. Week/month align to calendar boundaries (week starts Monday; month starts on the 1st); first/last buckets may be partial. The first bucket key may precede current_date_from (e.g. from 2026-04-01 at week granularity → first key 2026-03-30). Partial buckets include only data inside the requested date range. Series responses no longer include the scope or offset fields (removed in HP-1495); use the request granularity you sent.

Options:dayweekmonth
Optional
asinsarray

Optional. SQL IN filter by ASIN list (array of strings, e.g. ['B001234567']). Default null (all ASINs).

Default: null
breakdown_metricsarray

Optional. Only 11 metrics support sub-component breakdown: sales, units_sold, refund, advertising_cost, amazon_fees, reimbursements, cost_of_goods, indirect_cost, gross_revenue, sessions, units_returned. The other 10 (promo, estimated_payout, gross_profit, expenses, net_profit, margin, roi, tacos, ads_acos, refunds_percentage) are derived metrics — use summary tools for those. Default null = all 11.

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

currencystring

ISO 4217 code for amounts. Optional, defaults to USD.

Options:AEDAUDBRLCADCNYEGPEURGBPINRJPYMXNPLNSARSEKSGDTRYUSDZAR
Default: USD
date_tzstring

Timezone used to interpret calendar dates. Must be one of the Amazon marketplace report timezones (not any IANA timezone). Examples: America/Los_Angeles, Europe/Paris, Europe/London. Italy/Germany/Spain use Europe/Paris (not Europe/Rome or Europe/Berlin). Do not pass a city name, abbreviation, or UTC offset. Optional; when omitted, defaults to the queried marketplace's report timezone (America/Los_Angeles when no single marketplace is set).

Options:Africa/CairoAfrica/JohannesburgAmerica/Los_AngelesAmerica/Sao_PauloAsia/DubaiAsia/KolkataAsia/RiyadhAsia/ShanghaiAsia/SingaporeAsia/TokyoAustralia/SydneyEurope/AmsterdamEurope/BrusselsEurope/DublinEurope/IstanbulEurope/LondonEurope/ParisEurope/StockholmEurope/Warsaw
Default: null
marketplacearray

Optional marketplace filter as an array of region short codes ONLY (e.g. ['US', 'CA', 'MX']); Amazon SP-API marketplace IDs (e.g. 'ATVPDKIKX0DER'), seller IDs, and domains are rejected. Allowed: AE, AU, BE, BR, CA, CN, DE, EG, ES, FR, IE, IN, IT, JP, MX, NL, PL, SA, SE, SG, TR, UK, US, ZA. Default null (all authorised marketplaces).

Default: null
seller_idsarray

Optional. SQL IN filter on seller account IDs (array of strings). Profits intersects with sellers from Pacvue token; no intersection → empty result. Default null (all authorised sellers).

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

skusarray

Optional. SQL IN filter by seller SKU list (array of strings). Default null (all SKUs).

Default: null

Account P&L Summary

get_account_profit_and_loss_summary
Full Description

Helium 10 Account P&L Summary (formerly Profits). For a single date range, returns rolled-up account/store-level P&L — all Level 1 metrics (revenue, COGS, FBA & referral fees, ad spend, refunds, net margin, etc.) as a snapshot map; no product rows, no time buckets, no breakdown trees. Use for overall business performance (total profit, total fees, net-margin %) before drilling into products, trends, or fee line items. Prefer this first unless the question needs product granularity, a time series, or drill-down. Not for: per-product figures (use get_product_profit_and_loss_summary); trends (use get_account_profit_and_loss_summary_series); fee/ad/refund components (use get_account_profit_and_loss_breakdown). A cost_of_goods or indirect_cost of 0 may mean the cost was never configured rather than genuinely zero — data.caveats flags that when it happens. Verify with list_amazon_cogs / list_amazon_indirect_cost_settings before describing the figures as normal: net_profit and margin are upper bounds until you do.Comparing two periods? Both must span the same number of days: read data.meta.period_days from each response and require them to match. A 30-day window against a 31-day one inflates every percentage delta by roughly 2pp. If they differ, align the windows, switch to daily averages, or state the difference and its effect on every percentage you report.Amounts are converted into the requested currency per marketplace before aggregation; omitting marketplace means the figures are the combined total across every authorised marketplace, so say so when reporting them. data.meta echoes both.

Parameters (2 required, 8 optional)
Required
current_date_fromstring

Inclusive start calendar date in date_tz, YYYY-MM-DD only (no time). Use the exact parameter name current_date_from; do not use start_date, date_from, or from_date. Must be <= current_date_to.

current_date_tostring

Inclusive end calendar date in date_tz, YYYY-MM-DD only (no time). Use the exact parameter name current_date_to; do not use end_date, date_to, or to_date. Must be >= current_date_from. A value after today in date_tz is silently clamped to today in date_tz (the future has no data).

Optional
asinsarray

Optional. SQL IN filter by ASIN list (array of strings, e.g. ['B001234567']). Default null (all ASINs).

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

currencystring

ISO 4217 code for amounts. Optional, defaults to USD.

Options:AEDAUDBRLCADCNYEGPEURGBPINRJPYMXNPLNSARSEKSGDTRYUSDZAR
Default: USD
date_tzstring

Timezone used to interpret calendar dates. Must be one of the Amazon marketplace report timezones (not any IANA timezone). Examples: America/Los_Angeles, Europe/Paris, Europe/London. Italy/Germany/Spain use Europe/Paris (not Europe/Rome or Europe/Berlin). Do not pass a city name, abbreviation, or UTC offset. Optional; when omitted, defaults to the queried marketplace's report timezone (America/Los_Angeles when no single marketplace is set).

Options:Africa/CairoAfrica/JohannesburgAmerica/Los_AngelesAmerica/Sao_PauloAsia/DubaiAsia/KolkataAsia/RiyadhAsia/ShanghaiAsia/SingaporeAsia/TokyoAustralia/SydneyEurope/AmsterdamEurope/BrusselsEurope/DublinEurope/IstanbulEurope/LondonEurope/ParisEurope/StockholmEurope/Warsaw
Default: null
marketplacearray

Optional marketplace filter as an array of region short codes ONLY (e.g. ['US', 'CA', 'MX']); Amazon SP-API marketplace IDs (e.g. 'ATVPDKIKX0DER'), seller IDs, and domains are rejected. Allowed: AE, AU, BE, BR, CA, CN, DE, EG, ES, FR, IE, IN, IT, JP, MX, NL, PL, SA, SE, SG, TR, UK, US, ZA. Default null (all authorised marketplaces).

Default: null
seller_idsarray

Optional. SQL IN filter on seller account IDs (array of strings). Profits intersects with sellers from Pacvue token; no intersection → empty result. Default null (all authorised sellers).

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

skusarray

Optional. SQL IN filter by seller SKU list (array of strings). Default null (all SKUs).

Default: null

Account P&L Trends

get_account_profit_and_loss_summary_series
Full Description

Helium 10 Account P&L Trends (formerly Profits). Returns account-level Level 1 P&L as a time series bucketed by granularity (day/week/month) — each metric as one series (metric_key, values); no breakdowns, no product rows. Use to visualize how the overall business trends, compare period-over-period, and pinpoint when a metric shifted. Not for: single-period totals (use get_account_profit_and_loss_summary); per-product trends (use get_product_profit_and_loss_summary_series); fee/ad sub-component trends (use get_account_profit_and_loss_breakdown_series). A cost_of_goods or indirect_cost series that is 0 in every bucket may mean the cost was never configured rather than genuinely zero — data.caveats flags that when it happens. Verify with list_amazon_cogs / list_amazon_indirect_cost_settings before describing the figures as normal: net_profit and margin are upper bounds until you do.Comparing two periods? Both must span the same number of days: read data.meta.period_days from each response and require them to match. A 30-day window against a 31-day one inflates every percentage delta by roughly 2pp. If they differ, align the windows, switch to daily averages, or state the difference and its effect on every percentage you report.Amounts are converted into the requested currency per marketplace before aggregation; omitting marketplace means the figures are the combined total across every authorised marketplace, so say so when reporting them. data.meta echoes both.

Parameters (3 required, 8 optional)
Required
current_date_fromstring

Inclusive start calendar date in date_tz, YYYY-MM-DD only (no time). Use the exact parameter name current_date_from; do not use start_date, date_from, or from_date. Must be <= current_date_to.

current_date_tostring

Inclusive end calendar date in date_tz, YYYY-MM-DD only (no time). Use the exact parameter name current_date_to; do not use end_date, date_to, or to_date. Must be >= current_date_from. A value after today in date_tz is silently clamped to today in date_tz (the future has no data).

granularitystring

Time-bucket size for series tools: day | week | month. Use the exact parameter name granularity; do not use scope, interval, period, or bucket as input aliases. Week/month align to calendar boundaries (week starts Monday; month starts on the 1st); first/last buckets may be partial. The first bucket key may precede current_date_from (e.g. from 2026-04-01 at week granularity → first key 2026-03-30). Partial buckets include only data inside the requested date range. Series responses no longer include the scope or offset fields (removed in HP-1495); use the request granularity you sent.

Options:dayweekmonth
Optional
asinsarray

Optional. SQL IN filter by ASIN list (array of strings, e.g. ['B001234567']). Default null (all ASINs).

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

currencystring

ISO 4217 code for amounts. Optional, defaults to USD.

Options:AEDAUDBRLCADCNYEGPEURGBPINRJPYMXNPLNSARSEKSGDTRYUSDZAR
Default: USD
date_tzstring

Timezone used to interpret calendar dates. Must be one of the Amazon marketplace report timezones (not any IANA timezone). Examples: America/Los_Angeles, Europe/Paris, Europe/London. Italy/Germany/Spain use Europe/Paris (not Europe/Rome or Europe/Berlin). Do not pass a city name, abbreviation, or UTC offset. Optional; when omitted, defaults to the queried marketplace's report timezone (America/Los_Angeles when no single marketplace is set).

Options:Africa/CairoAfrica/JohannesburgAmerica/Los_AngelesAmerica/Sao_PauloAsia/DubaiAsia/KolkataAsia/RiyadhAsia/ShanghaiAsia/SingaporeAsia/TokyoAustralia/SydneyEurope/AmsterdamEurope/BrusselsEurope/DublinEurope/IstanbulEurope/LondonEurope/ParisEurope/StockholmEurope/Warsaw
Default: null
marketplacearray

Optional marketplace filter as an array of region short codes ONLY (e.g. ['US', 'CA', 'MX']); Amazon SP-API marketplace IDs (e.g. 'ATVPDKIKX0DER'), seller IDs, and domains are rejected. Allowed: AE, AU, BE, BR, CA, CN, DE, EG, ES, FR, IE, IN, IT, JP, MX, NL, PL, SA, SE, SG, TR, UK, US, ZA. Default null (all authorised marketplaces).

Default: null
seller_idsarray

Optional. SQL IN filter on seller account IDs (array of strings). Profits intersects with sellers from Pacvue token; no intersection → empty result. Default null (all authorised sellers).

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

skusarray

Optional. SQL IN filter by seller SKU list (array of strings). Default null (all SKUs).

Default: null

Campaign Management Platforms

get_ads_campaign_mgmt_platforms
Full Description

Helium 10 Campaign Management Platforms (Campaign Mgmt, step 1 of 3). Lists the advertising platforms available for ad management (e.g. amazon, walmart) and, for each, the supported action types (campaign_create, keyword_update, ...). The entry point: use it to discover valid platform keys and action types before steps 2–3. Next: get_ads_campaign_mgmt_schema(platform, actionType).

Campaign Management pipeline

① get_ads_campaign_mgmt_platforms → ② get_ads_campaign_mgmt_schema → ③ resolve profileId via get_ads_query_materials → ④ execute_ads_campaign_mgmt_actions.

Note: there is no dedicated materials tool in this pipeline — resolve the profileId (or advertiser / vendor_account / seller_account id, per the platform) with the Data Query tool get_ads_query_materials before calling execute_ads_campaign_mgmt_actions.

Parameters (0 required, 2 optional)
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Campaign Management Action Schema

get_ads_campaign_mgmt_schema
Full Description

Helium 10 Campaign Management Action Schema (Campaign Mgmt, step 2 of 3). Given a platform key and an action type, returns the JSON Schema needed to execute that specific action on a given platform.Use to learn what the request_body of an action must contain before calling execute_ads_campaign_mgmt_actions. Prerequisite: get_ads_campaign_mgmt_platforms (for valid platform + actionType pairs). Next: resolve profileId via get_ads_query_materials, then execute_ads_campaign_mgmt_actions.

Parameters (2 required, 2 optional)
Required
action_typestring

Action type from get_ads_campaign_mgmt_platforms (actions[].actionType), e.g. campaign_create, keyword_update. Case-sensitive. Wire param: ``actionType``.

platformstring

Platform key from get_ads_campaign_mgmt_platforms (e.g. amazon, walmart). Case-sensitive.

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Change Log Platforms

get_ads_changelog_platforms
Full Description

Helium 10 Change Log Platforms (Change Log, step 1). Lists the advertising platforms available for change-log queries (e.g. amazon, walmart) and, for each, the supported change types (budget_changed, bid_changed, keyword_changed, ...). The entry point: use it to discover valid platform keys and change types before querying change-log data. Call with no arguments to list every platform, or pass `platform` to restrict the result to one.

Parameters (0 required, 3 optional)
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

platformstring/null

Optional. Restrict the result to one platform. Must be a plain string: 'amazon' or 'walmart'. Do not pass an array or object.

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Change Log Schema

get_ads_changelog_schema
Full Description

Helium 10 Change Log Schema (Change Log, step 2). Given a platform key and a change type, returns the full self-describing schema for querying that change type: available filters, the change_source / change_by / change_source_id cascade, result columns, and the sort / paging contracts. Use it to learn which filters and option values are valid before querying change-log data. If supported=false, read issues and stop — do not proceed. Prerequisite: get_ads_changelog_platforms (for valid platform + change_type).

Parameters (2 required, 2 optional)
Required
change_typestring

Change type from get_ads_changelog_platforms (changeTypes[].changeType), e.g. bid_changed. Case-sensitive.

platformstring

Platform key from get_ads_changelog_platforms (amazon, walmart). Required. Case-sensitive.

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Ad Data Hierarchy

get_ads_query_list
Full Description

Helium 10 Ad Data Hierarchy (Data Query, step 2 of 5). Given a platform key, returns its full level hierarchy (root → leaf, e.g. profile → campaign → adgroup → target) plus cross-level attribute and tag tables. Use to understand the data structure and identify the correct level name for the schema step. Prerequisite: get_ads_query_platforms. Next: get_ads_query_schema(platform, level).

Parameters (1 required, 2 optional)
Required
platformstring

A platform key returned by get_ads_query_platforms (e.g. amazon, walmart). Case-sensitive.

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Ad Campaign Lookup

get_ads_query_materials
Full Description

Helium 10 Ad Campaign Lookup (Data Query, step 4 of 5). Given a platform, a level (typically profile / campaign / adgroup / target — see get_ads_query_list) and the entity dimensions you want returned, lists the resolved stable ids in your Ads account. Use to convert profile/campaign names into the ids execute_ads_query needs. Pass a name-substring filter (e.g. {field: "campaign_name", op: "like", value: "Brand%"}) to behave like a target lookup. dimensions must be a list of OBJECTS (e.g. [{"field":"campaign_id"},{"field":"campaign_name"}], illustrative — use real fields from get_ads_query_schema), not bare strings. profile_ids is OPTIONAL — the upstream accepts an empty list and interprets it as 'every profile the user has access to' (tenant isolation stays enforced via the inbound bearer token); pass an explicit list only when the user named a specific profile. Internally this targets the same POST /query endpoint as execute_ads_query with measures / having / orderBy hard-coded to []. Prerequisite: get_ads_query_schema (for valid dimension and filter fields). Next: execute_ads_query.

Parameters (3 required, 6 optional)
Required
dimensionsarray

Group-by dimensions (REQUIRED, non-empty), as a list of OBJECTS — each {"field": <a field name from get_ads_query_schema dimensions[].field>}. NOT bare strings. Example (illustrative — use real fields from the schema): [{"field":"profile_id"},{"field":"profile_name"}]. Typically the entity id and display name for the level. No granularity here — material listing never time-buckets.

levelstring

Material level name (e.g. profile, campaign, adgroup, target). Same value used in get_ads_query_schema; names come from get_ads_query_list.levels[].name.

platformstring

Platform key (e.g. amazon, walmart). Same value used in get_ads_query_list and get_ads_query_schema.

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

filtersarray/null

WHERE-clause conditions, AND-combined. Use this to narrow the entity list (e.g. filter campaigns by name substring, by state, by adgroup_id, ...). By UI convention, append a state-like 'not_in' filter to exclude delete-like enum values (archived / deleted / removed / ...) unless the user explicitly asks for them. Read enum values from the schema and pass the `value` verbatim (case-sensitive), not the `physical` form. Default null.

Default: null
limitinteger/null

Max rows to return. Default null (backend default).

Default: null
offsetinteger/null

Row offset for pagination. Default null (no offset).

Default: null
profile_idsarray/null

Tenant-isolation profile ids (string[]). Optional on the input surface (the upstream swagger marks ``profileIds`` as nullable). Pass an explicit list to restrict the materials to those profiles; leave empty / null to list materials across every profile the user has access to (the upstream accepts the empty list and falls back to the bearer token's accessible set, tenant isolation stays enforced). Each material id returned by this tool is a number; stringify it before forwarding elsewhere (e.g. ``["100001", "100002"]``). Wire field: ``profileIds``.

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Available Ad Platforms

get_ads_query_platforms
Full Description

Helium 10 Available Ad Platforms (Data Query, step 1 of 5). Returns the advertising platforms available to query in your account (e.g. amazon, walmart). No inputs required — platforms are derived from your account credentials (the inbound bearer token). The entry point: use it to get valid platform keys before steps 2–5. Not for: actual performance numbers (use execute_ads_query after the intermediate steps). Next: get_ads_query_list(platform).

Data Query pipeline

① get_ads_query_platforms → ② get_ads_query_list → ③ get_ads_query_schema → ④ get_ads_query_materials → ⑤ user selects specific profile(s) → ⑥ execute_ads_query

Required profile selection

Before calling execute_ads_query, the user must choose specific profiles from the profile/material results.

1. Call get_ads_query_materials for the relevant scope (profile, advertiser, vendor_account, or seller_account). 2. Build a concise selection list from the returned materials. Each option should include the display name plus the id that will be sent to execute_ads_query. 3. Use Cursor's AskQuestion tool with multi-select enabled when available so the user gets a real choice list. Do not proceed from a plain text assumption. 4. Continue only after the user selects at least one option. Send only the selected ids in profile_ids or the matching scope id field. 5. Never call execute_ads_query with all profiles by default, a guessed default profile, or profiles inferred only from prior context.

If the returned material list is too large, show the most relevant profiles first and include an 'Other profile id' option. If there is only one returned profile, still ask the user to confirm that profile before executing.

Parameters (0 required, 2 optional)
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Ad Query Schema

get_ads_query_schema
Full Description

Helium 10 Ad Query Schema (Data Query, step 3 of 5). Given a platform key and a level, returns the full queryable definition — every dimension, measure, filter, allowed operator, aggregation, granularity, and enum value. Fully self-describing: it contains everything needed to build a valid query, including the state-like enum used for the default exclusion filter in execute_ads_query. Use to learn what fields exist and how to filter them before running a query. Prerequisite: get_ads_query_list (for valid level names). Next: optionally get_ads_query_materials, otherwise execute_ads_query.

Parameters (2 required, 2 optional)
Required
levelstring

A valid level name from get_ads_query_list (e.g. profile, campaign, adgroup, target). Case-sensitive.

platformstring

Platform key (same value used in get_ads_query_list).

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Get Ads Rule

get_ads_rule
Full Description

Helium 10 Get Ads Rule (Ads Rule, read). Returns the full detail of a single live automation rule (source=live, id=rule_id) or a single draft (source=draft, id=draft_id) as the generic rule document (each criteria carries its own conditions + action + lookback). Use it to review a rule before editing (manage_ads_rule draft_open mode=edit) or deleting (rule_delete). A live rule that carries uneditable_reason (e.g. UNSUPPORTED.RULE_HAS_TACTIC, meaning it uses a Tactic) CANNOT be edited through the MCP: do NOT open an edit draft for it -- direct the user to the Helium 10 Ads Rules & Automation page instead (delete is still allowed). source=live is tenant-scoped: pass profile_id, or omit it and the server auto-resolves the single accessible profile (returns a candidate list when several exist). Prerequisite: list_ads_rules to find the id.

Parameters (2 required, 4 optional)
Required
idstring

The rule_id (source=live) or draft_id (source=draft) to fetch. For source=live this is a 32-character lowercase hex rule_id (e.g. faa679c9b78e4b9fb8b452326f24dd00); for source=draft it is a decimal draft_id (e.g. 2089352922874187778).

sourcestring

'live' to fetch a committed rule by rule_id; 'draft' to fetch a draft by draft_id.

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

platformstring/null

Optional platform hint (e.g. amazon).

Default: null
profile_idstring/null

Target profile_id. Optional for source=draft; for source=live it scopes the tenant -- omit it only if you want the server to auto-resolve your single accessible profile.

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Ads Rule Platforms

get_ads_rule_platforms
Full Description

Helium 10 Ads Rule Platforms (Ads Rule, step 1 of 4). Lists the advertising platforms and automation rule types available for this account, and for each rule type the supported actions and whether it is supported yet. The entry point for creating or editing an automation rule. Returns only names (no field catalog).

Ads Rule pipeline

① get_ads_rule_platforms → ② get_ads_rule_schema(platform, rule_type) → ③ resolve profile_id / campaign ids via get_ads_query_materials → ④ manage_ads_rule (draft_open → draft_save → [confirm] → draft_commit).

v1 supports amazon + rule_type=BID only; other rule types report supported=false. Next: get_ads_rule_schema(platform, rule_type).

Editing constraint

A rule that uses a Tactic CANNOT be edited through the MCP (draft_open mode=edit / draft_commit return UNSUPPORTED.RULE_HAS_TACTIC). Before planning an edit, check the rule's uneditable_reason from list_ads_rules / get_ads_rule; if set, direct the user to the Helium 10 Ads Rules & Automation page instead of building an edit.

Parameters (0 required, 2 optional)
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Ads Rule Schema

get_ads_rule_schema
Full Description

Helium 10 Ads Rule Schema (Ads Rule, step 2 of 4). Given a platform and rule_type (from get_ads_rule_platforms), returns the complete field catalog for that rule type: metrics, operators, actions, guardrails, lookback, frequency, timezone, targeting, constraints and dependencies. Always full (no section filter). Every enum value you put in a draft (metric / operator / action / frequency / timezone) MUST come from this return -- do not invent wire values -- and numbers are actual values per unitHints (e.g. ACOS 12% → 0.12, $0.50 → 0.50). Prerequisite: get_ads_rule_platforms. Next: get_ads_query_materials to resolve profile_id / campaign ids, then manage_ads_rule.

Parameters (2 required, 2 optional)
Required
platformstring

Platform key from get_ads_rule_platforms (e.g. amazon). Case-sensitive.

rule_typestring

Rule type from get_ads_rule_platforms (e.g. BID). Case-sensitive.

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Amazon Average Budget Utilization

get_amazon_ads_average_budget_utilization
Full Description

Amazon Average Budget Utilization (Helium 10 Ads). Returns, per campaign, how much of its budget was used on average across a date range, plus a total for the whole selection. AMAZON ONLY -- there is no platform argument, and no equivalent exists for Walmart or any other platform. Definition: total spend in the range divided by the sum of that range's per-day budgets -- a weighted ratio, NOT the average of the daily percentages, and the total is computed the same weighted way (so it will not equal the mean of the rows). Values are ratios, not percentages: 0.83 means 83% of budget used. A value above 1.0 means the campaign overspent its budget and is a real state, not an error. Use it for 'how fully did I spend my budget over the last N days', budget pacing reviews, and finding chronically under- or over-spending campaigns. Not for today's live consumption -- use get_amazon_ads_current_budget_utilization. Covers all four campaign types (sponsoredProducts, sponsoredBrands, sponsoredDisplay, sponsoredTV) and reads from daily report data, so the most recent hours of today are not reflected. A date range is required. Omit campaign_ids to cover every campaign of the profile; there is no paging, so check the returned truncated flag against total_count. Prerequisite: get_ads_query_materials(level=profile) for profile_id.

Response shape

Returns {rows, total_average_budget_utilization, total_count, truncated}. Each row is {campaign_id, campaign_name, campaign_type, state, daily_budget, average_budget_utilization}. Read the overall figure from total_average_budget_utilization -- do NOT average the rows yourself, it is weighted and stays correct even when rows are truncated. campaign_id is a STRING, not a number: these ids exceed the range integers hold exactly, so compare and join them as strings. truncated=true means the row cap cut the list short and total_count tells you the real number of matching campaigns.

Caveats worth surfacing to the user

Campaigns with no delivery in the range come back with 0 rather than being absent, so a long tail of zeros is normal and does not mean the query was wrong. Days a campaign had no delivery contribute no budget to the denominator, which pushes the ratio up for intermittently-paused campaigns.

Parameters (3 required, 5 optional)
Required
date_fromstring

Range start, ISO YYYY-MM-DD (e.g. 2026-08-01). Note this differs from execute_ads_changelog_query on the same server, which takes DD-MM-YYYY.

date_tostring

Range end, ISO YYYY-MM-DD (e.g. 2026-08-19).

profile_idstring

Target Amazon profile id from get_ads_query_materials(level=profile).

Optional
campaign_idsarray/null

Optional numeric Amazon campaign ids. Omit to cover every campaign of the profile. An id that does not exist in this profile is not an error -- it simply does not appear in rows, so reconcile the result against what you asked for.

Default: null
campaign_statusarray/null

Optional campaign state filter. Only enabled, paused and archived are accepted; other states are rejected rather than silently ignored.

Default: null
campaign_typesarray/null

Optional campaign type filter. Only sponsoredProducts, sponsoredBrands, sponsoredDisplay and sponsoredTV are accepted; other values are rejected rather than silently ignored.

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Amazon Current Budget Utilization

get_amazon_ads_current_budget_utilization
Full Description

Amazon Current Budget Utilization (Helium 10 Ads). Returns how much of TODAY's budget each of the given campaigns has consumed so far, read live from Amazon at call time. AMAZON ONLY -- there is no platform argument, and no equivalent exists for Walmart or any other platform. Values are ratios, not percentages, and can exceed 1.0: 0.95 means 95% of today's budget spent. Each row carries usage_updated_timestamp so you can tell a fresh reading from a stale one. Use it for 'which campaigns are about to run out of budget today', intraday pacing checks and budget top-up decisions. Not for historical pacing over a range -- use get_amazon_ads_average_budget_utilization. campaign_ids is REQUIRED (max 500 per call) and there is no date range, no paging and no total: Amazon's API answers per campaign id only. You do not pass campaign types; they are resolved server-side. Covers Sponsored Products, Brands and Display only -- Sponsored TV has no budget-usage API and comes back under unsupported. Prerequisite: get_ads_query_materials for profile_id and campaign ids.

Response shape

Returns {rows, errors, unsupported} and nothing else -- no totals. Each row is {campaign_id, campaign_type, budget, current_budget_utilization, usage_updated_timestamp}; each errors entry is {campaign_id, code, details}; each unsupported entry is {campaign_id, campaign_type, reason}. campaign_id is a STRING, not a number: these ids exceed the range integers hold exactly.

Reading the response

rows = live readings. errors = ids Amazon rejected or did not answer (code NO_RESPONSE). unsupported = ids that were never sent, either because they do not belong to this profile (reason 'campaign not found in this profile') or because their campaign type is outside SP / SB / SD (reason 'campaign type is not supported by Amazon's budget usage API') -- Sponsored TV in particular has no budget-usage API. Those two reasons mean different things: an unsupported type means switch to get_amazon_ads_average_budget_utilization, which does cover Sponsored TV; a not-found id means the id is wrong or belongs to another profile. EVERY id you pass lands in exactly one of the three arrays, so reconcile against your request. Report unsupported and errored ids to the user rather than treating them as zero. A reading of 0.0 is normal early in the advertiser's day -- check usage_updated_timestamp before calling it stale.

Parameters (2 required, 2 optional)
Required
campaign_idsarray

Required. Numeric Amazon campaign ids to read, at most 500 per call. Amazon's budget-usage API has no 'all campaigns' mode, so resolve the ids first (e.g. get_ads_query_materials at campaign level, or the ids from a prior query).

profile_idstring

Target Amazon profile id from get_ads_query_materials(level=profile).

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

ASIN BSR History

get_asin_bsr_history
Full Description

Helium 10 ASIN BSR history. Returns Best Sellers Rank history for one ASIN (asin): main-category constant-rank segments (start / end / bsr) plus per-subcategory daily points (date / bsr) when available. Default last 30 days when both dates omitted. Pass start_date and end_date together (both YYYY-MM-DD within the last 3 years), or omit both for the default last 30 days; do not pass only one date. Use when the user explicitly asks for BSR history or rank trend. Not for price (use get_asin_price_history), reviews/rating (use get_asin_reviews_history), keyword ranking (use Keyword Tracker), batch multi-ASIN, or discovery.

Parameters (2 required, 4 optional)
Required
asinstring

Required. ASIN to query, 10-char alphanumeric (e.g. B01LR5S6HK).

marketplacestring

Required. Amazon marketplace code. Allowed values: US, CA, MX, DE, ES, IT, FR, UK, IN, NL, AU, JP, AE, BR, SA.

Options:USCAMXDEESITFRUKINNLAUJPAEBRSA
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

end_datestring

Optional window end (inclusive), format yyyy-MM-dd (UTC day), no later than today. Pass it together with start_date, both within the last 3 years, or omit both dates for the default last 30 days. Do not pass only one date.

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

start_datestring

Optional window start (inclusive), format yyyy-MM-dd (UTC day). Pass it together with end_date, both within the last 3 years, or omit both dates for the default last 30 days. Do not pass only one date.

Default: null

ASIN Price History

get_asin_price_history
Full Description

Helium 10 ASIN price history. Returns price segments (start / end / price) for one ASIN (asin); identical values may merge. Default last 30 days when both dates omitted. Pass start_date and end_date together (both YYYY-MM-DD within the last 3 years), or omit both for the default last 30 days; do not pass only one date. Use when the user explicitly asks for price history or trend. Not for BSR (use get_asin_bsr_history), reviews/rating (use get_asin_reviews_history), search volume (use get_keywords_search_volume_history), sales history, batch multi-ASIN, or product discovery.

Parameters (2 required, 4 optional)
Required
asinstring

Required. ASIN to query, 10-char alphanumeric (e.g. B01LR5S6HK).

marketplacestring

Required. Amazon marketplace code. Allowed values: US, CA, MX, DE, ES, IT, FR, UK, IN, NL, AU, JP, AE, BR, SA.

Options:USCAMXDEESITFRUKINNLAUJPAEBRSA
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

end_datestring

Optional window end (inclusive), format yyyy-MM-dd (UTC day), no later than today. Pass it together with start_date, both within the last 3 years, or omit both dates for the default last 30 days. Do not pass only one date.

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

start_datestring

Optional window start (inclusive), format yyyy-MM-dd (UTC day). Pass it together with end_date, both within the last 3 years, or omit both dates for the default last 30 days. Do not pass only one date.

Default: null

ASIN Review Insights

get_asin_review_analysis
Full Description

Helium 10 ASIN Review Insights (HCE Review Insights Phase 1) via Amazon Customer Feedback. Given one marketplace and exactly one Amazon ASIN (child, parent, or standalone), returns positive/negative review topics sorted by mentions and by star-rating impact, plus topic trends (~6 months) for that ASIN. Use for product research, listing optimization, and competitor review-theme comparison. For multi-variation comparison, call get_listing_details then invoke this tool once per selected ASIN. Not for: category-level returns or browse-node analysis (use get_category_review_analysis); more than one ASIN per call (split calls; do not rely on silent truncation). Marketplace must be uppercase (e.g. US). Read-only. A successful call consumes one MCP quota unit even when topic payloads are empty/null after omit-null.

Parameters (2 required, 2 optional)
Required
asinstring

Amazon ASIN to analyze (child, parent, or standalone). Exactly ONE ASIN per call, exactly 10 alphanumeric characters. More than one ASIN is rejected with INVALID_INPUT.INVALID_ASIN_FORMAT — input is never silently truncated.

marketplacestring

Amazon marketplace code. Two-letter UPPERCASE code; supported values: US, UK, FR, IT, DE, ES, JP. Lowercase or unsupported codes are rejected with INVALID_INPUT.INVALID_MARKETPLACE.

Options:USUKFRITDEESJP
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

ASIN Reviews History

get_asin_reviews_history
Full Description

Helium 10 ASIN reviews history. Returns Review Count and Rating for one ASIN (asin) in one call, as daily points (date / review_count / rating). Default last 30 days when both dates omitted. Pass start_date and end_date together (both YYYY-MM-DD within the last 3 years), or omit both for the default last 30 days; do not pass only one date. Use when the user explicitly asks for reviews or rating history/trend. Not for price (use get_asin_price_history), BSR (use get_asin_bsr_history), search volume, batch multi-ASIN, or product discovery.

Parameters (2 required, 4 optional)
Required
asinstring

Required. ASIN to query, 10-char alphanumeric (e.g. B01LR5S6HK).

marketplacestring

Required. Amazon marketplace code. Allowed values: US, CA, MX, DE, ES, IT, FR, UK, IN, NL, AU, JP, AE, BR, SA.

Options:USCAMXDEESITFRUKINNLAUJPAEBRSA
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

end_datestring

Optional window end (inclusive), format yyyy-MM-dd (UTC day), no later than today. Pass it together with start_date, both within the last 3 years, or omit both dates for the default last 30 days. Do not pass only one date.

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

start_datestring

Optional window start (inclusive), format yyyy-MM-dd (UTC day). Pass it together with end_date, both within the last 3 years, or omit both dates for the default last 30 days. Do not pass only one date.

Default: null

Bought Together History

get_bought_together_history
Full Description

Helium 10 Frequently Bought Together history. Returns raw daily observation records of the given product's "Frequently Bought Together" slot: each record is (event_date, product_id, bought_with), meaning the bought-with product was observed in this product's FBT slot on that date. IDs are marketplace-specific product IDs (ASIN on Amazon); the bought_with value can be passed directly to other tools' asin parameters. Daily snapshot data, not order counts. Default last 30 days when both dates omitted; pass start_date and end_date together (both within the last 3 years), do not pass only one date. Use when the user asks for "bought together", "FBT", bundle, or cross-sell partners of a product. Returns up to limit rows per call (default 100, max 10000); one page inlines at most ~500 rows / ~1MB, and requests far above that (>1000 rows or >~2MB) are delivered as a download link instead of inline rows. If data.pagination.has_more is true the result is incomplete: call again with cursor = data.pagination.next_cursor, but prefer narrowing filters over paginating through everything. Cursors expire 30 minutes after being issued and are bound to the query that issued them. Set response_format='download' when the user explicitly wants the data as a file. Not for: similar/competing listings (use search_competitors_by_asin); product targeting ads data (use search_product_targets_by_asin); product details like title/price (use get_listing_details per ASIN).

Parameters (1 required, 10 optional)
Required
product_idstring

Required. Marketplace-specific product ID to query — the ASIN on Amazon, 10-char alphanumeric (e.g. B01LR5S6HK).

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

cursorstring

Opaque pagination cursor from a previous response's pagination.next_cursor. Omit for the first page. Pass it back verbatim with the same query arguments (limit may change between pages); never construct or edit it. Cursors are reusable but expire 30 minutes after being issued (pagination.cursor_expires_at) and are bound to the query that issued them.

Default: null
end_datestring

Optional window end (inclusive), format yyyy-MM-dd (UTC day), no later than today. Pass it together with start_date, both within the last 3 years, or omit both dates for the default last 30 days. Do not pass only one date.

Default: null
export_formatstring

File format when results are delivered as a download (ignored for inline delivery). 'json' (default): gzip-compressed JSON, best for programmatic analysis. 'csv': UTF-8 CSV that opens directly in Excel/Sheets - prefer it when the user wants a spreadsheet/report file. Columns are the union of row fields; nested values stay JSON-encoded.

Options:jsoncsv
Default: json
fieldsarray

Optional projection: return only these row fields, to save tokens when you need a few columns. Unknown names get a self-healing error listing the available fields. Overrides detail_level when both are set. Omit for the full field set.

Default: null
limitinteger

Number of rows to return. Defaults to 100, max 10000; out-of-range values are clamped rather than rejected. Rows are large (~90B per row), so request only what the user needs — up to 500 rows per page come back inline (slightly larger asks are truncated and continue via `cursor`); requests far above the inline budget (>1000 rows or very large payloads) are delivered as a download link (response_format=auto). When pagination.has_more is true, fetch the next batch with `cursor`. Do NOT probe with limit=1 to learn the dataset size — every page carries the same total_count/has_more metadata, so ask for the rows you actually need and read the metadata of that response.

Default: 100
marketplacestring

Amazon marketplace code, default US. Allowed values: US, CA, MX, BR, DE, ES, FR, IT, UK, NL, TR, IN, AE, EG, SA, SE, PL, JP, AU, SG, CN, BE, ZA, IE.

Options:USCAMXBRDEESFRITUKNLTRINAEEGSASEPLJPAUSGCNBEZAIE
Default: US
response_formatstring

How results are delivered. 'auto' (default): rows are returned inline when they fit the response budget, otherwise they are exported to a file and data.export.download_url is returned instead — so simply request the amount of data you need via `limit`. 'inline': always inline, oversized pages are truncated and continue via cursor. 'download': always a downloadable file, even for small results; the file contains exactly the window selected by `limit`/`cursor`, so size `limit` to what is wanted (the tool's max for the whole dataset). Use 'download' when the user wants a file or when you need many rows for analysis (fetch the link in your execution environment instead of paging through the conversation).

Options:autoinlinedownload
Default: auto
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

start_datestring

Optional window start (inclusive), format yyyy-MM-dd (UTC day). Pass it together with end_date, both within the last 3 years, or omit both dates for the default last 30 days. Do not pass only one date.

Default: null

Brand Seller & Marketplace Picker

get_brand_seller_profiles
Full Description

Helium 10 helper — discovers and disambiguates a Brand-Registered Amazon seller × marketplace pair before an SQA call. Lists the caller's linked Brand-Registered sellers (non-Brand-Registered links are filtered out here, so downstream never sees them); each row is one seller_id with store_name and a marketplaces[] list (one card may span a region, e.g. NA = US/CA/MX). Drive it as a two-step picker: pick a row to lock seller_id, then pick one value from that row's marketplaces[] to lock marketplace, and pass both to get_search_query_performance. Use when the user references 'my store / my account / this listing' without naming a pair, or when one seller spans multiple marketplaces. Not for: a pair already provided or locked this session (skip it); adding/editing seller links (Helium 10 account settings); seller-level sales/fee/inventory analytics.

Parameters (0 required, 3 optional)
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

marketplacestring

Optional marketplace filter (US, UK, DE, JP, CA, FR, IT, ES). When set, only seller rows whose marketplaces[] contains this value are returned. Does not trim marketplaces[] on each row.

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Get Buy Box Summary

get_buybox_summary
Full Description

Helium 10 Alerts — current Buy Box standing across a brand's monitored ASINs. Omit marketplace for an all-marketplaces overview (winning/losing counts and win rate per marketplace); pass marketplace for single-market detail including the specific losing ASINs, their current Buy Box winner, and ASINs lost in the last 7 days. ASINs with no Buy Box winner data at all (neutral — not yet synced or no competing offers) are excluded from every losing_count, but still count toward win_rate's total-monitored denominator. For one ASIN's Buy Box history over time use search_buybox_history.

Parameters (1 required, 3 optional)
Required
seller_idstring

Helium 10 seller identifier.

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

marketplacestring

Optional marketplace code. Omit for an all-marketplaces overview; pass US/UK/DE/JP/etc. for single-market detail.

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Category Review Insights

get_category_review_analysis
Full Description

Helium 10 Category Review Insights (HCE Review Insights Phase 2, including Returns) via Amazon Customer Feedback. Given one marketplace and exactly one confirmed browse_node_id, returns category review topics (by mentions and by star-rating impact), review trends, and return topics/trends (~6 months). Use for category feedback research, return-risk checks, and category trend monitoring. Requires a confirmed browse node id—not a fuzzy category name. If the user only has a phrase, call search_browse_nodes and confirm one id first—never pass unresolved candidate sets. Not for: ASIN-level returns; ASIN-level review topics (use get_asin_review_analysis); more than one browse node per call. Marketplace must be uppercase (e.g. US). Read-only. A successful call consumes one MCP quota unit even when payloads are empty after omit-null.

Parameters (2 required, 2 optional)
Required
browse_node_idstring

Confirmed numeric Amazon browse node id (from search_browse_nodes after user confirmation), e.g. "3733721". Exactly ONE browse node id per call; multiple ids, category names, or any other non-numeric value are rejected with INVALID_INPUT.INVALID_BROWSE_NODE — input is never silently truncated.

marketplacestring

Amazon marketplace code. Two-letter UPPERCASE code; supported values: US, UK, FR, IT, DE, ES, JP. Lowercase or unsupported codes are rejected with INVALID_INPUT.INVALID_MARKETPLACE.

Options:USUKFRITDEESJP
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Get Change Rollup

get_change_rollup
Full Description

Helium 10 Alerts — account-level rollup of what changed in the last 24h or 7d for a seller in one marketplace. Aggregates alert events (plus Seller Feedback notifications) by urgency (P0–P3), by event type, and by ASIN, and returns the P0 critical events that need immediate action. Use to answer 'what changed today / this week?' and 'what's most urgent?'. For raw per-event detail use search_alert_events.

Parameters (2 required, 3 optional)
Required
marketplacestring

Marketplace code: US, UK, DE, JP, etc.

Options:USCAMXDEESITFRUKINNLAUJPAEBRSA
seller_idstring

Helium 10 seller identifier.

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

windowstring

Aggregation window: '24h' (default) or '7d'.

Options:24h7d
Default: 24h

Competitor Benchmark

get_competitor_overview
Full Description

Helium 10 Competitor Benchmark. For an ASIN group (main + up to 10 competitors), returns competitive benchmark data across 6 metrics — sales, revenue, price, BSR, review count, rating — for every ASIN in the session alongside two group averages: searched_products_avg (your session competitors) and top_competitors_avg (top 5 market performers, auto-resolved by LA). All ASINs returned in one call; the agent pairs each ASIN's values with the group averages to answer comparison questions. Omit competitor_asins to rely on top_competitors_avg only. Use for competitive health checks, pre-launch positioning, and finding the biggest performance gaps. Not for: full attribute comparison (use compare_listings); keyword-level analysis (use get_top_keywords).

Parameters (0 required, 6 optional)
Optional
asinstring

Alias for ``main_asin`` (accepted because callers often send ``asin``). Prefer ``main_asin``; when both are supplied ``main_asin`` wins. Leave unset if you already pass ``main_asin``.

Default: null
competitor_asinsarray

Optional list of up to 10 competitor ASINs (each 10 characters). Omit (or pass an empty list) to let upstream auto-discover competitors and return their group average only (no per-competitor rows); supply explicit ASINs to instead receive per-ASIN sales blocks plus the cross-ASIN seed average.

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

main_asinstring

Main Amazon ASIN to benchmark (10 characters). Always the anchor of the competitor comparison. Required — the parameter is named ``main_asin`` (not ``asin``); you may also pass it via the ``asin`` alias.

Default: null
marketplacestring

Optional marketplace short code where the ASIN is listed. Supported: US, CA, MX, DE, ES, IT, FR, UK, IN, NL, AE, BR, AU. Defaults to US when omitted. Case-insensitive; whitespace is trimmed.

Default: US
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Get FBA Inventory Health Status

get_fba_inventory_health_status
Full Description

Return FBA inventory health metrics per product row: days of supply (a decimal number of days, e.g. 12.75 — report it as-is, do not present it as a whole number) and inventory age bucket unit counts (<31 days, 31-180 days, >180 days). Each row includes standard product information (without fulfillment_type — implicit FBA). Not on-hand/inbound quantity counts; not FBM; not a time series. The unit counts here are health signals only — use them to judge aging/slow-moving risk, never as an authoritative quantity source. Do NOT compare or reconcile them with get_inventory_values; the two use different methodologies and are not expected to match. Use when the user asks about FBA stock health, days of supply, slow-moving or aged inventory in Amazon fulfillment centers, or restock risk from an FBA aging perspective. Not for: quantity snapshots (available, inbound, unfulfillable) or FBM (use get_inventory_values); sales velocity over time (use get_sales_velocity); profit & loss or fees (use Phase 1 P&L tools). Combine seller_ids, marketplace, asins, skus, and pagination to limit payload size. Do not pass fulfillment_type — this tool does not accept it. Pass days_of_supply_min / days_of_supply_max to filter by supply days server-side (inclusive bounds); rows with null days_of_supply are omitted when a range filter is active — do not assume they were evaluated as zero. Pass inv_age_stage (less_31_days | 31_to_180_days | over_180_days) to find SKUs that HAVE units in that age bucket: this is a presence filter, so returned rows still show all three inv_age_* counts and a SKU with over-180-day stock may also have younger inventory. Combine inv_age_stage with days_of_supply_max for restock / long-term-storage triage.

Parameters (0 required, 11 optional)
Optional
asinsarray

Optional. SQL IN filter by ASIN list (array of strings, e.g. ['B001234567']). Default null (all ASINs).

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

days_of_supply_maxinteger

Optional. Maximum inclusive health.days_of_supply. The bound itself must be a non-negative integer, but it is compared against a fractional value: only rows where days_of_supply <= days_of_supply_max are returned, so days_of_supply_max=14 keeps 14.0 and 13.9 but drops 14.5. Rows with null days_of_supply are excluded when this or days_of_supply_min is set. May be combined with days_of_supply_min.

Default: null
days_of_supply_mininteger

Optional. Minimum inclusive health.days_of_supply. The bound itself must be a non-negative integer, but it is compared against a fractional value: only rows where days_of_supply >= days_of_supply_min are returned, so days_of_supply_min=14 keeps 14.0 and 14.5 but drops 13.9. Rows with null days_of_supply are excluded when this or days_of_supply_max is set. May be combined with days_of_supply_max.

Default: null
inv_age_stagestring

Optional. Inventory age bucket presence filter. Returns only rows that HAVE units (count > 0) in the selected bucket. Allowed values: less_31_days, 31_to_180_days, over_180_days. At most one value (mutually exclusive); omit for no age-stage filter. This is a presence filter, not exclusivity: a matching row still reports all three inv_age_* counts, so a SKU matching over_180_days may also have younger inventory.

Default: null
marketplacearray

Optional marketplace filter as an array of region short codes ONLY (e.g. ['US', 'CA', 'MX']); Amazon SP-API marketplace IDs (e.g. 'ATVPDKIKX0DER'), seller IDs, and domains are rejected. Allowed: AE, AU, BE, BR, CA, CN, DE, EG, ES, FR, IE, IN, IT, JP, MX, NL, PL, SA, SE, SG, TR, UK, US, ZA. Default null (all authorised marketplaces).

Default: null
page_indexinteger

Optional. Page number (integer), starts from 1. Default 1.

Default: null
page_sizeinteger

Optional. Rows per page (integer). Min 5, max 1000. Default 50.

Default: null
seller_idsarray

Optional. SQL IN filter on seller account IDs (array of strings). Profits intersects with sellers from Pacvue token; no intersection → empty result. Default null (all authorised sellers).

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

skusarray

Optional. SQL IN filter by seller SKU list (array of strings). Default null (all SKUs).

Default: null

Get Inventory Values

get_inventory_values
Full Description

Return current Amazon inventory quantity metrics per product row, with fulfillment_type (FBA or FBM) on each row. FBA rows include available, inbound pipeline quantities, and unfulfillable. FBM rows include available only (FBA-only keys are omitted, not zero-filled). Not a time series; not inventory age or days-of-supply. This is the authoritative source for inventory quantities; do NOT reconcile or cross-check these counts against get_fba_inventory_health_status, whose numbers are health signals only and follow a different methodology. Use when the user asks how much stock is on hand, in transit to Amazon (inbound), or unfulfillable; needs SKU/ASIN-level inventory counts across sellers/marketplaces; restock or fulfillment planning based on quantity snapshots. Not for: FBA health/aging/days of supply (use get_fba_inventory_health_status); sales velocity or units sold over time (use get_sales_velocity); profit & loss or fees (use Phase 1 P&L tools). Pass seller_ids, marketplace, asins, skus, and/or fulfillment_type (FBA | FBM) to limit rows; omit fulfillment_type for both channels. Use pagination when listing many SKUs. Pass available_min / available_max to filter rows by on-hand quantity (inclusive bounds on inventory.available) without post-processing in agent context. Combine sort_by=available with a small page_size to retrieve top/bottom N SKUs by stock level in one call: sort_order=asc surfaces lowest-stock SKUs first (restock prioritization), sort_order=desc surfaces highest-stock SKUs first.

Parameters (0 required, 13 optional)
Optional
asinsarray

Optional. SQL IN filter by ASIN list (array of strings, e.g. ['B001234567']). Default null (all ASINs).

Default: null
available_maxinteger

Optional. Maximum inclusive inventory.available quantity (non-negative integer). When set, only rows where available <= available_max are returned. May be combined with available_min.

Default: null
available_mininteger

Optional. Minimum inclusive inventory.available quantity (non-negative integer). When set, only rows where available >= available_min are returned. May be combined with available_max.

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

fulfillment_typestring

Optional fulfillment channel filter: FBA | FBM. Omit to query both FBA and FBM inventory.

Default: null
marketplacearray

Optional marketplace filter as an array of region short codes ONLY (e.g. ['US', 'CA', 'MX']); Amazon SP-API marketplace IDs (e.g. 'ATVPDKIKX0DER'), seller IDs, and domains are rejected. Allowed: AE, AU, BE, BR, CA, CN, DE, EG, ES, FR, IE, IN, IT, JP, MX, NL, PL, SA, SE, SG, TR, UK, US, ZA. Default null (all authorised marketplaces).

Default: null
page_indexinteger

Optional. Page number (integer), starts from 1. Default 1.

Default: null
page_sizeinteger

Optional. Rows per page (integer). Min 5, max 1000. Default 50.

Default: null
seller_idsarray

Optional. SQL IN filter on seller account IDs (array of strings). Profits intersects with sellers from Pacvue token; no intersection → empty result. Default null (all authorised sellers).

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

skusarray

Optional. SQL IN filter by seller SKU list (array of strings). Default null (all SKUs).

Default: null
sort_bystring

Optional. Metric to sort product rows by, using each row's inventory.available value. If omitted, server default order applies (unspecified, stable). Allowed values: available.

Default: null
sort_orderstring

Optional. Sort direction for sort_by. 'desc' = highest value first (default); 'asc' = lowest value first. Ignored if sort_by is not provided.

Default: null

Keyword Performance vs Competitors

get_keyword_performance_with_competitors
Full Description

Helium 10 Listing Builder — scores how well a keyword set is written into listing copy for your ASIN and up to 10 competitors: a per-ASIN Keyword Performance Score (KPS) by field plus coverage counts, and per keyword the text-match types each ASIN achieves in title / bullets / description, plus demand metrics and organic rank. Competitors are always scored on their published listing; so is your ASIN unless you pass main_listing_draft for unpublished copy. Use to find keywords competitors wrote into their copy and you did not, and which field each belongs in. Reading text_match: Codes, strongest first: E = Exact Phrase; P = Plural/Singular; R = Partial Phrase; F = Field Broad (all words in that field); L = Listing Broad (words spread across fields). Not for: benchmarking listings on sales, reviews, price or quality score (use compare_listings); keyword gaps derived from organic search-result data rather than from listing copy (use compare_asin_keywords).

Parameters (3 required, 4 optional)
Required
keyword_listarray

1-300 keywords to evaluate. The cap matches find_keywords_with_multi_source's return cap, so its rows can be passed through whole. If you have more, pass the highest-priority_score subset.

main_asinstring

REQUIRED. Your product's ASIN (10-character alphanumeric). Always first in `asins` with is_mine=true.

marketplacestring

REQUIRED. Marketplace short code (case-sensitive). No default — matching is language-specific. Confirm the marketplace with the user once, before the first Listing Builder call of the session; every later Listing Builder tool reuses that same value — do NOT ask the user for it again once it is set. Supported values: US, CA, MX, DE, ES, IT, FR, UK, IN, NL, AU, JP, BE, BR.

Options:USCAMXDEESITFRUKINNLAUJPBEBR
Optional
competitor_asinsarray

0-10 competitor ASINs. Empty means single-listing keyword performance only (metrics.cps is then null). main_asin and duplicates are dropped silently and reported in skipped_asins.

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

main_listing_draft

Unpublished copy to score for the main ASIN instead of its published listing. Field-by-field override.

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Get Keywords by ASIN

get_keywords_by_asin
Full Description

Helium 10 Keyword Research (formerly Cerebro). Reverse keyword search for one Amazon ASIN: returns every phrase where the ASIN is visible on Amazon — organic, sponsored, or in Amazon's recommendations — with search volume, rank, CPC, ABA top-3 click/conversion share, and H10 metrics (CPR, IQ score, title density). Use for keyword discovery from your own listing, competitor reverse-search, listing coverage audits, and PPC keyword selection. Not for: seed-keyword expansion with no ASIN (use get_keywords_by_keyword); scoring a finalized list (use analyze_keywords). Pass optional time_period (YYYY-MM) to look back at a single past month (e.g. last November's related keywords); omit for current data. One month per request; query each month separately for multi-month comparisons. limit accepts 1-10000 rows per call (default 150); up to 1000 rows per page are returned inline and a larger ask is delivered as a downloadable file instead (data.export.download_url) — set response_format='download' when the user explicitly wants a file. If data.pagination.has_more is true the result is incomplete: call again with cursor = data.pagination.next_cursor, but prefer narrowing the query over paginating through everything — this tool can page to at most 100,000 rows for one query, past which the result is truncated (truncation_reason='traversal_bound') and only a narrower query reaches the rest. Cursors expire 30 minutes after being issued and are bound to the query that issued them.

Parameters (2 required, 8 optional)
Required
asinstring

Single Amazon ASIN, 10-char alphanumeric (e.g. B01LR5S6HK).

marketplacestring

Marketplace code: US, UK, DE, JP, etc. Must be in the Cerebro allowlist.

Options:USCAMXDEESITFRUKINNLAUJPAEBRSA
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

cursorstring

Opaque pagination cursor from a previous response's pagination.next_cursor. Omit for the first page. Pass it back verbatim with the same query arguments (limit may change between pages); never construct or edit it. Cursors are reusable but expire 30 minutes after being issued (pagination.cursor_expires_at) and are bound to the query that issued them.

Default: null
exclude_variationsboolean

Optional. Default false: the search aggregates the ASIN's parent and all child variations. Pass true to cover only the exact ASIN given.

Default: False
export_formatstring

File format when results are delivered as a download (ignored for inline delivery). 'json' (default): gzip-compressed JSON, best for programmatic analysis. 'csv': UTF-8 CSV that opens directly in Excel/Sheets - prefer it when the user wants a spreadsheet/report file. Columns are the union of row fields; nested values stay JSON-encoded.

Options:jsoncsv
Default: json
limitinteger

Number of rows to return, 1-10000 (default 150); out-of-range values are rejected. Up to 1000 rows come back inline; ask for more and the window is delivered as a file instead (data.export.download_url), so size `limit` to what is actually wanted. A page can still come back shorter than `limit` when the rows are unusually large (the ~1MB inline budget); pagination.truncated says so and `cursor` continues from there. When pagination.has_more is true, fetch the next batch with `cursor`. Do NOT probe with a small limit to learn the dataset size — every page carries the same total_count/has_more metadata, so ask for the rows you actually need and read the metadata of that response.

Default: 150
response_formatstring

How results are delivered. 'auto' (default): rows are returned inline when they fit the response budget, otherwise they are exported to a file and data.export.download_url is returned instead — so simply request the amount of data you need via `limit`. 'inline': always inline, oversized pages are truncated and continue via cursor. 'download': always a downloadable file, even for small results; the file contains exactly the window selected by `limit`/`cursor`, so size `limit` to what is wanted (the tool's max for the whole dataset). Use 'download' when the user wants a file or when you need many rows for analysis (fetch the link in your execution environment instead of paging through the conversation).

Options:autoinlinedownload
Default: auto
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

time_periodstring

Optional historical month YYYY-MM (e.g. 2025-12). Omit for current data. One month per request; must fall within the 24-month lookback ending at the current UTC month.

Default: null

Get Keywords by Walmart Item ID

get_keywords_by_item_id
Full Description

Helium 10 Keyword Research for Walmart (Walmart Cerebro). Reverse keyword search for one Walmart item: returns every phrase the item ranks on at walmart.com, organic or sponsored, with the item's position on each phrase, how many products compete on it, how many run ads on it, and the phrase's Amazon search volume for cross-platform comparison. Use for: keyword discovery from a Walmart listing, competitor reverse-search on Walmart, Walmart listing coverage audits, and Walmart Sponsored Products keyword selection. Not for: Amazon products - use get_keywords_by_asin instead. Multi-item keyword comparison on Walmart - use compare_item_keywords. The two demand columns mean different things and are not comparable. search_trend_score is Walmart demand on a 0-100 relative scale (the "Search Trend Score" column in the Helium 10 UI)

  • NOT a number of searches, never report it as one. amazon_search_volume is the same phrase's estimated monthly searches on Amazon, an absolute number, provided for cross-platform comparison. Walmart also has no CPR, IQ Score, CPC, ABA click/conversion share, or title density - those exist on Amazon only. limit accepts 1-10000 rows per call (default 150); up to 1000 rows per page are returned inline and a larger ask is delivered as a downloadable file instead (data.export.download_url) — set response_format='download' when the user explicitly wants a file. If data.pagination.has_more is true the result is incomplete: call again with cursor = data.pagination.next_cursor, but prefer narrowing the query over paginating through everything — this tool can page to at most 100,000 rows for one query, past which the result is truncated (truncation_reason='traversal_bound') and only a narrower query reaches the rest. Cursors expire 30 minutes after being issued and are bound to the query that issued them.
Parameters (1 required, 7 optional)
Required
item_idstring

Single Walmart item ID, all digits (e.g. 10450114). It is the numeric segment at the end of a walmart.com product URL. Amazon ASINs are not accepted here - use get_keywords_by_asin for Amazon.

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

cursorstring

Opaque pagination cursor from a previous response's pagination.next_cursor. Omit for the first page. Pass it back verbatim with the same query arguments (limit may change between pages); never construct or edit it. Cursors are reusable but expire 30 minutes after being issued (pagination.cursor_expires_at) and are bound to the query that issued them.

Default: null
exclude_variationsboolean

Optional. Default false: the search aggregates the item and all its variants. Pass true to cover only the exact item ID given.

Default: False
export_formatstring

File format when results are delivered as a download (ignored for inline delivery). 'json' (default): gzip-compressed JSON, best for programmatic analysis. 'csv': UTF-8 CSV that opens directly in Excel/Sheets - prefer it when the user wants a spreadsheet/report file. Columns are the union of row fields; nested values stay JSON-encoded.

Options:jsoncsv
Default: json
limitinteger

Number of rows to return, 1-10000 (default 150); out-of-range values are rejected. Up to 1000 rows come back inline; ask for more and the window is delivered as a file instead (data.export.download_url), so size `limit` to what is actually wanted. A page can still come back shorter than `limit` when the rows are unusually large (the ~1MB inline budget); pagination.truncated says so and `cursor` continues from there. When pagination.has_more is true, fetch the next batch with `cursor`. Do NOT probe with a small limit to learn the dataset size — every page carries the same total_count/has_more metadata, so ask for the rows you actually need and read the metadata of that response.

Default: 150
response_formatstring

How results are delivered. 'auto' (default): rows are returned inline when they fit the response budget, otherwise they are exported to a file and data.export.download_url is returned instead — so simply request the amount of data you need via `limit`. 'inline': always inline, oversized pages are truncated and continue via cursor. 'download': always a downloadable file, even for small results; the file contains exactly the window selected by `limit`/`cursor`, so size `limit` to what is wanted (the tool's max for the whole dataset). Use 'download' when the user wants a file or when you need many rows for analysis (fetch the link in your execution environment instead of paging through the conversation).

Options:autoinlinedownload
Default: auto
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Get Keywords by Keyword

get_keywords_by_keyword
Full Description

Helium 10 Keyword Research (formerly Magnet). Seed-keyword expansion for one keyword: returns related long-tail and derivative phrases with search volume, relationship type, CPC, ABA top-3 click/conversion share, and H10 metrics (CPR, IQ score, title density). Use for keyword planning from a single concept, PPC keyword selection, listing keyword coverage, and hero-keyword discovery. Not for: reverse search on an ASIN (use get_keywords_by_asin); scoring a finalized list (use analyze_keywords). Pass optional time_period (YYYY-MM) to look back at a single past month (e.g. last November's related keywords); omit for current data. One month per request; query each month separately for multi-month comparisons. limit accepts 1-10000 rows per call (default 150); up to 1000 rows per page are returned inline and a larger ask is delivered as a downloadable file instead (data.export.download_url) — set response_format='download' when the user explicitly wants a file. If data.pagination.has_more is true the result is incomplete: call again with cursor = data.pagination.next_cursor, but prefer narrowing the query over paginating through everything — this tool can page to at most 100,000 rows for one query, past which the result is truncated (truncation_reason='traversal_bound') and only a narrower query reaches the rest. Cursors expire 30 minutes after being issued and are bound to the query that issued them.

Parameters (2 required, 7 optional)
Required
marketplacestring

Marketplace code: US, UK, DE, JP, etc. Must be in the Magnet allowlist.

Options:USCAMXDEESITFRUKINNLAUJPAEBRSA
seed_keywordstring

Single seed keyword, e.g. 'apple watch bands for women'.

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

cursorstring

Opaque pagination cursor from a previous response's pagination.next_cursor. Omit for the first page. Pass it back verbatim with the same query arguments (limit may change between pages); never construct or edit it. Cursors are reusable but expire 30 minutes after being issued (pagination.cursor_expires_at) and are bound to the query that issued them.

Default: null
export_formatstring

File format when results are delivered as a download (ignored for inline delivery). 'json' (default): gzip-compressed JSON, best for programmatic analysis. 'csv': UTF-8 CSV that opens directly in Excel/Sheets - prefer it when the user wants a spreadsheet/report file. Columns are the union of row fields; nested values stay JSON-encoded.

Options:jsoncsv
Default: json
limitinteger

Number of rows to return, 1-10000 (default 150); out-of-range values are rejected. Up to 1000 rows come back inline; ask for more and the window is delivered as a file instead (data.export.download_url), so size `limit` to what is actually wanted. A page can still come back shorter than `limit` when the rows are unusually large (the ~1MB inline budget); pagination.truncated says so and `cursor` continues from there. When pagination.has_more is true, fetch the next batch with `cursor`. Do NOT probe with a small limit to learn the dataset size — every page carries the same total_count/has_more metadata, so ask for the rows you actually need and read the metadata of that response.

Default: 150
response_formatstring

How results are delivered. 'auto' (default): rows are returned inline when they fit the response budget, otherwise they are exported to a file and data.export.download_url is returned instead — so simply request the amount of data you need via `limit`. 'inline': always inline, oversized pages are truncated and continue via cursor. 'download': always a downloadable file, even for small results; the file contains exactly the window selected by `limit`/`cursor`, so size `limit` to what is wanted (the tool's max for the whole dataset). Use 'download' when the user wants a file or when you need many rows for analysis (fetch the link in your execution environment instead of paging through the conversation).

Options:autoinlinedownload
Default: auto
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

time_periodstring

Optional historical month YYYY-MM (e.g. 2025-11). Omit for current data. One month per request; must fall within the 24-month lookback ending at the current UTC month.

Default: null

Keywords CPC History

get_keywords_cpc_history
Full Description

Helium 10 keyword CPC / suggested PPC bid history (not a Black Box Web module). Returns weekly suggested-PPC-bid points for one keyword (keyword): cpc, low_cpc, high_cpc as of each event date, plus currency_code (the marketplace's local currency; values are not a single fixed currency across marketplaces). cpc, low_cpc, and high_cpc are integers in the minor unit of currency_code (e.g. 79 = USD 0.79); Japan (JPY) has no minor unit, so its values are whole yen. Default last 30 days when both dates omitted. Pass start_date and end_date together (both YYYY-MM-DD within the last 3 years), or omit both for the default last 30 days; do not pass only one date. Use when the user asks for CPC or PPC bid history/trend for a keyword. Not for search volume history (use get_keywords_search_volume_history), ASIN price/BSR/reviews history, keyword ranking history, current/snapshot CPC already present in search results, or batch multi-keyword calls.

Parameters (2 required, 4 optional)
Required
keywordstring

Required. Keyword to fetch CPC history for: phrase text (e.g. 'wireless earbuds') or a numeric Helium 10 phrase id (digit-only input is treated as a phrase id). 1-500 characters.

marketplacestring

Required. Amazon marketplace code. Allowed values: US, CA, MX, DE, ES, IT, FR, UK, IN, NL, AU, JP, AE, BR, SA.

Options:USCAMXDEESITFRUKINNLAUJPAEBRSA
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

end_datestring

Optional window end (inclusive), format yyyy-MM-dd (UTC day), no later than today. Pass it together with start_date, both within the last 3 years, or omit both dates for the default last 30 days. Do not pass only one date.

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

start_datestring

Optional window start (inclusive), format yyyy-MM-dd (UTC day). Pass it together with end_date, both within the last 3 years, or omit both dates for the default last 30 days. Do not pass only one date.

Default: null

New Keywords to Track

get_keywords_new_suggestion
Full Description

Helium 10 New Keywords to Track. For a given ASIN, returns keywords NOT yet in your Keyword Tracker — drawn from the ASIN's own footprint and its tracked competitors' footprints — with search volume, keyword_sales, CPS, ABA shares, and a source field (main product vs a specific competitor). Use to expand your tracked set after a listing change, find high-potential terms you're missing, and for tracking hygiene. Candidates only — add them in the Helium 10 UI. Not for: already-tracked metrics (use list_tracked_keywords); reverse search with no tracking context (use get_keywords_by_asin); competitor comparison (use list_tracked_competitor_keywords). Errors: invalid_input / invalid_asin / no_result / no_data / rate_limited / upstream_timeout. Returns up to limit rows per call (default 100, max 40000); one page inlines at most ~500 rows / ~1MB, and oversized pages are truncated and continue via cursor. If data.pagination.has_more is true the result is incomplete: call again with cursor = data.pagination.next_cursor, but prefer narrowing filters over paginating through everything. Cursors expire 30 minutes after being issued and are bound to the query that issued them.

Parameters (1 required, 7 optional)
Required
asin_or_urlstring

10-character Amazon ASIN or Amazon product URL containing an ASIN; JSON key `asin_or_url`. Required and must not be blank. If the user has not provided an ASIN or product URL, ask them to supply it—do not infer, search for, or invent an ASIN.

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

cursorstring

Opaque pagination cursor from a previous response's pagination.next_cursor. Omit for the first page. Pass it back verbatim with the same query arguments (limit may change between pages); never construct or edit it. Cursors are reusable but expire 30 minutes after being issued (pagination.cursor_expires_at) and are bound to the query that issued them.

Default: null
limitinteger

Number of rows to return. Defaults to 100, max 40000; out-of-range values are clamped rather than rejected. request only what the user needs — up to 500 rows per page come back inline (slightly larger asks are truncated and continue via `cursor`). When pagination.has_more is true, fetch the next batch with `cursor`. Do NOT probe with limit=1 to learn the dataset size — every page carries the same total_count/has_more metadata, so ask for the rows you actually need and read the metadata of that response.

Default: 100
marketplacestring

Amazon marketplace short code (e.g. `US`, `UK`, `DE`, `JP`). Optional, case-insensitive. Use one of the marketplace codes exposed in this schema.

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

sort_directionstring

Sort direction sent as `sort.direction`: `asc` or `desc` (case-insensitive).

Default: null
sort_fieldstring

Optional sort field for `keywords_new_suggestion`; must be one of the PRD sortable fields exposed in this schema.

Default: null

Keyword Rank History (Sponsored & Organic, Time-Series)

get_keywords_rank_history
Full Description

Helium 10 Keyword Tracker. Returns historical sponsored and organic rank trends for one keyword (fuzzy match) over a date range, scoped to an ASIN/product URL — summary metrics (top / lowest / average for both surfaces) plus full time-series rank history. Use to analyze rank movement over time, find peak ad-placement periods, detect organic-rank decline, and evaluate phased ranking performance. Not for: current snapshots across all tracked keywords (use list_tracked_keywords); discovering new keywords (use get_keywords_by_asin); batch metrics across a list (use analyze_keywords). Errors: invalid_input / invalid_asin / no_result / no_data / rate_limited / upstream_timeout. Returns up to limit rows per call (default 100, max 500); one page inlines at most ~500 rows / ~1MB, and oversized pages are truncated and continue via cursor. If data.pagination.has_more is true the result is incomplete: call again with cursor = data.pagination.next_cursor, but prefer narrowing filters over paginating through everything. Cursors expire 30 minutes after being issued and are bound to the query that issued them.

Parameters (1 required, 8 optional)
Required
keywordstring

Required search keyword phrase to query rank history for; sent as `keyword`. Must not be blank or whitespace only. The IO API performs fuzzy matching against tracked keywords on the supplied ASIN.

Optional
asin_or_urlstring

Required for meaningful results: 10-char ASIN or product URL (asin_or_url). Rank history is scoped to tracked keywords on this ASIN; fuzzy keyword match runs against that ASIN's tracked set. Optional for this tool — omit for account-level tracked keywords for the marketplace.

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

cursorstring

Opaque pagination cursor from a previous response's pagination.next_cursor. Omit for the first page. Pass it back verbatim with the same query arguments (limit may change between pages); never construct or edit it. Cursors are reusable but expire 30 minutes after being issued (pagination.cursor_expires_at) and are bound to the query that issued them.

Default: null
end_datestring

Optional end of the rank-history window. ISO date in `yyyy-MM-dd` format (UTC day boundary: `start_date` is anchored at `00:00:00` and `end_date` at `23:59:59`). When omitted, invalid, the IO API falls back to the last 30 days.

Default: null
limitinteger

Number of rows to return. Defaults to 100, max 500; out-of-range values are clamped rather than rejected. Rows are large (~2.5KB per row, up to ~20KB for keywords with Boost enabled), so request only what the user needs — up to 500 rows per page come back inline (slightly larger asks are truncated and continue via `cursor`). When pagination.has_more is true, fetch the next batch with `cursor`. Do NOT probe with limit=1 to learn the dataset size — every page carries the same total_count/has_more metadata, so ask for the rows you actually need and read the metadata of that response.

Default: 100
marketplacestring

Amazon marketplace short code (e.g. `US`, `UK`, `DE`, `JP`). Optional, case-insensitive. Use one of the marketplace codes exposed in this schema.

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

start_datestring

Optional start of the rank-history window. ISO date in `yyyy-MM-dd` format (UTC day boundary: `start_date` is anchored at `00:00:00` and `end_date` at `23:59:59`). When omitted, invalid, the IO API falls back to the last 30 days.

Default: null

Keywords Sales History

get_keywords_sales_history
Full Description

Keywords sales history. Returns weekly sales-units points for one keyword (keyword); each point is the sales units attributed to that keyword for the week starting on that event date. Each point has period_start/period_end (period_start plus 6 days) alongside sales. Default last 30 days when both dates omitted. Pass start_date and end_date together (both YYYY-MM-DD within the last 3 years), or omit both for the default last 30 days; do not pass only one date. Use when the user asks for sales history or sales trend for a keyword. Not for ASIN price/BSR/reviews, keyword search volume, keyword ranking, or batch multi-keyword.

Parameters (2 required, 4 optional)
Required
keywordstring

Required. Keyword to fetch sales history for: phrase text (e.g. 'wireless earbuds') or a numeric Helium 10 phrase id (digit-only input is treated as a phrase id).

marketplacestring

Required. Amazon marketplace code. Allowed values: US, CA, MX, DE, ES, IT, FR, UK, IN, NL, AU, JP, AE, BR, SA.

Options:USCAMXDEESITFRUKINNLAUJPAEBRSA
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

end_datestring

Optional window end (inclusive), format yyyy-MM-dd (UTC day), no later than today. Pass it together with start_date, both within the last 3 years, or omit both dates for the default last 30 days. Do not pass only one date.

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

start_datestring

Optional window start (inclusive), format yyyy-MM-dd (UTC day). Pass it together with end_date, both within the last 3 years, or omit both dates for the default last 30 days. Do not pass only one date.

Default: null

Keywords Search Frequency Rank History

get_keywords_search_frequency_rank_history
Full Description

Keywords search frequency rank history (Amazon Brand Analytics). Returns search-frequency-rank points for one keyword (keyword), one point per reporting period; lower rank means the keyword is searched more frequently. Each point has period_start/period_end (that week/month's calendar boundaries) plus search_frequency_rank. reporting_range (weekly or monthly) is required. Default last 30 days when both dates omitted. Pass start_date and end_date together (both YYYY-MM-DD within the last 3 years), or omit both for the default last 30 days; do not pass only one date. Use when the user asks for search frequency rank or Brand Analytics rank trend for a keyword. Not for ASIN price/BSR/reviews, keyword search volume, keyword sales, or batch multi-keyword.

Parameters (3 required, 4 optional)
Required
keywordstring

Required. Keyword to fetch search frequency rank history for: phrase text (e.g. 'wireless earbuds') or a numeric Helium 10 phrase id (digit-only input is treated as a phrase id).

marketplacestring

Required. Amazon marketplace code. Allowed values: US, CA, MX, DE, ES, IT, FR, UK, IN, NL, AU, JP, AE, BR, SA.

Options:USCAMXDEESITFRUKINNLAUJPAEBRSA
reporting_rangestring

Required. Reporting period granularity for the rank series: weekly or monthly.

Options:weeklymonthly
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

end_datestring

Optional window end (inclusive), format yyyy-MM-dd (UTC day), no later than today. Pass it together with start_date, both within the last 3 years, or omit both dates for the default last 30 days. Do not pass only one date.

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

start_datestring

Optional window start (inclusive), format yyyy-MM-dd (UTC day). Pass it together with end_date, both within the last 3 years, or omit both dates for the default last 30 days. Do not pass only one date.

Default: null

Keywords Search Volume History

get_keywords_search_volume_history
Full Description

Keywords search volume history (not a Black Box Web module). Returns weekly search-volume points for one keyword (keyword); each point is the trailing 30-day search volume for that week, and data updates about weekly. Default last 30 days when both dates omitted. Pass start_date and end_date together (both YYYY-MM-DD within the last 3 years), or omit both for the default last 30 days; do not pass only one date. Use when the user asks for search volume history or demand trend. Not for ASIN price/BSR/reviews, keyword ranking, batch multi-keyword, or keyword discovery rows (use search_amazon_keywords).

Parameters (2 required, 4 optional)
Required
keywordstring

Required. Keyword to fetch search volume history for: phrase text (e.g. 'wireless earbuds') or a numeric Helium 10 phrase id (digit-only input is treated as a phrase id).

marketplacestring

Required. Amazon marketplace code. Allowed values: US, CA, MX, DE, ES, IT, FR, UK, IN, NL, AU, JP, AE, BR, SA.

Options:USCAMXDEESITFRUKINNLAUJPAEBRSA
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

end_datestring

Optional window end (inclusive), format yyyy-MM-dd (UTC day), no later than today. Pass it together with start_date, both within the last 3 years, or omit both dates for the default last 30 days. Do not pass only one date.

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

start_datestring

Optional window start (inclusive), format yyyy-MM-dd (UTC day). Pass it together with end_date, both within the last 3 years, or omit both dates for the default last 30 days. Do not pass only one date.

Default: null

Listing Analyzer

get_listing_details
Full Description

Helium 10 Listing Analyzer. For one Amazon ASIN, returns the complete listing profile: title, Listing Quality Score (LQS), age, image count, variation count, category & subcategory BSR, seller name & region, price, coupon status, parent- and ASIN-level sales with revenue estimates, review count, sales-to-review, shipping details, weight, storage fee, top-10 keywords with search volumes, and variation relationships with parent/child info (a child ASIN input also works). Use as the primary single-ASIN lookup for listing audits, pre-launch benchmarking, variation-family discovery, and competitive research on a specific product. Not for: comparing multiple ASINs (use compare_listings); the LQS pass/fail checklist (use get_listing_score); keyword strategy (use get_top_keywords); writing / generating / optimizing / rewriting listing copy — title, bullets, or description (that is the Listing Builder flow, not this tool).

Parameters (0 required, 5 optional)
Optional
asinstring

Alias for ``main_asin`` (accepted because callers often send ``asin``). Prefer ``main_asin``; when both are supplied ``main_asin`` wins. Leave unset if you already pass ``main_asin``.

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

main_asinstring

Main Amazon ASIN to analyze (10 characters). This is the seed listing whose full profile is returned along with the three chart bundles. Required — the parameter is named ``main_asin`` (not ``asin``); you may also pass it via the ``asin`` alias.

Default: null
marketplacestring

Optional marketplace short code where the ASIN is listed. Supported: US, CA, MX, DE, ES, IT, FR, UK, IN, NL, AE, BR, AU. Defaults to US when omitted. Case-insensitive; whitespace is trimmed.

Default: US
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Listing Quality Audit

get_listing_score
Full Description

Helium 10 Listing Quality Audit. For an ASIN group (main + up to 10 competitors), returns the session-average LQS (0–10) with aggregate pass/fail counts per criterion, plus individual LQS scores and pass/fail results for all 13 criteria per ASIN — across Copy, Media, and Review (title symbols/length, ≥5 bullets, bullet length, image resolution & count, white-background main image, video presence, description ≥1000 chars or A+, ≥20 reviews, ≥4-star rating). All ASINs returned in one call; the agent surfaces whichever ASIN the user asks about. Use to understand content-compliance scores, pinpoint which elements drag LQS down, and compare listing quality across competitors. Not for: full attribute lookup (use get_listing_details); a quick LQS number alongside other metrics (use compare_listings).

Parameters (0 required, 6 optional)
Optional
asinstring

Alias for ``main_asin`` (accepted because callers often send ``asin``). Prefer ``main_asin``; when both are supplied ``main_asin`` wins. Leave unset if you already pass ``main_asin``.

Default: null
competitor_asinsarray

Optional list of up to 10 competitor ASINs (each 10 characters). When provided, ``score_data`` gains one block per competitor and ``summary_data`` reports the cross-ASIN ``average_lqs`` plus per-metric ``asins_passed`` / ``asins_failed`` lists.

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

main_asinstring

Main Amazon ASIN to score (10 characters). Its own score block (``lqs`` + per-metric pass/fail) is always returned under ``score_data.<asin>``. Required — the parameter is named ``main_asin`` (not ``asin``); you may also pass it via the ``asin`` alias.

Default: null
marketplacestring

Optional marketplace short code where the ASIN is listed. Supported: US, CA, MX, DE, ES, IT, FR, UK, IN, NL, AE, BR, AU. Defaults to US when omitted. Case-insensitive; whitespace is trimmed.

Default: US
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

MT360 Market Leaderboard

get_market_leaderboard
Full Description

Return compared leaderboard for one MT360 market: ranked categories, brands, or products by revenue and unit sales (totalValue, totalValueCompared, change, growth). Requires market_id, leader_board_tabs_type (0=CATEGORIES top-level only, 1=BRANDS, 2=PRODUCTS), date_from, date_to (yyyy-MM-dd; prefer list_user_markets defaultDateFrom/To), and sort (-totalValue top performing | -growth fastest growing | -change largest increase | change top declining). There is no category_id input; CATEGORIES is always the top-level ranking, not a subcategory drill-down. compared_date_from and compared_date_to are optional but must be passed together for the compare period (maps to DSA compareDateFrom/compareDateTo). If both are omitted, totalValueCompared, change, and growth are null. Passing only one is rejected. Dates are yyyy-MM-dd and inclusive. MT360 uses Saturday as the weekly cutoff: Mon–Fri the latest allowed end date is the Saturday of the week before last; Saturday–Sunday may use last Saturday. Each provided range must span at least 28 inclusive days. When a compare range is sent (compared_date_from + compared_date_to), the two ranges must be similar length (inclusive day counts differ by at most 5). change is an absolute amount delta, not a percent: on revenue rows it is currency change (scaled for display except Japan marketplaceId 10 and parentDataMode 1, same as totalValue); on unitSales rows it is unit-sales volume change (never /100). growth is the percent field, passed through from DSA with no processing (e.g. 26.873 means 26.873%) — never divide growth by 100. Values: totalValue/totalValueCompared on revenue rows are currency amounts already scaled for display except Japan and parent mode; unitSales row totals are not scaled. Nested item.price/priceAverage/priceDynamic/fbaFee/netPrice/pricePerUnit on revenue and unitSales are already /100 except Japan; listingScore is not scaled. item.fbaFee/pricePerUnit/price/priceAverage/sizeTier/yearSales/weight/height/width/length of -1 are returned as null (not /100). null and 0 are not scaled. estimatedRevenue, estimatedRevenueDynamic, estimatedSales, and estimatedSalesDynamic are omitted from item. Always pass parent_data_mode (false/0 = child/variation, true/1 = parent); omitted defaults to child. Prefer the market's parentDataMode from list_user_markets. Not for: headline share cards (get_market_statistics), time series (get_market_overall), or full product table (get_market_products).

Parameters (5 required, 5 optional)
Required
date_fromstring

Required primary range start yyyy-MM-dd. Must be on or before date_to. Dates are yyyy-MM-dd and inclusive. MT360 uses Saturday as the weekly cutoff: Mon–Fri the latest allowed end date is the Saturday of the week before last; Saturday–Sunday may use last Saturday. Each provided range must span at least 28 inclusive days.

date_tostring

Required primary range end yyyy-MM-dd. Must be on or after date_from. Dates are yyyy-MM-dd and inclusive. MT360 uses Saturday as the weekly cutoff: Mon–Fri the latest allowed end date is the Saturday of the week before last; Saturday–Sunday may use last Saturday. Each provided range must span at least 28 inclusive days.

leader_board_tabs_typeinteger

Required tab. 0=CATEGORIES (top-level Amazon categories only; there is no category_id drill-down), 1=BRANDS, 2=PRODUCTS.

market_idinteger

Required. MT360/MI market id (from list_user_markets).

sortstring

Required. DSA LeaderBoardSortsV3Enum: -totalValue = top performing (highest primary value); -growth = fastest growing; -change = largest absolute increase; change = top declining (do not prefix with '-').

Options:-totalValue-growth-changechange
Optional
compared_date_fromstring

Optional compare range start yyyy-MM-dd. Must be sent together with compared_date_to. If both are omitted, totalValueCompared, change, and growth are null. Dates are yyyy-MM-dd and inclusive. MT360 uses Saturday as the weekly cutoff: Mon–Fri the latest allowed end date is the Saturday of the week before last; Saturday–Sunday may use last Saturday. Each provided range must span at least 28 inclusive days. When a compare range is sent (compared_date_from + compared_date_to), the two ranges must be similar length (inclusive day counts differ by at most 5).

Default: null
compared_date_tostring

Optional compare range end yyyy-MM-dd. Must be sent together with compared_date_from. If both are omitted, totalValueCompared, change, and growth are null. Dates are yyyy-MM-dd and inclusive. MT360 uses Saturday as the weekly cutoff: Mon–Fri the latest allowed end date is the Saturday of the week before last; Saturday–Sunday may use last Saturday. Each provided range must span at least 28 inclusive days. When a compare range is sent (compared_date_from + compared_date_to), the two ranges must be similar length (inclusive day counts differ by at most 5).

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

parent_data_modeboolean

Parent vs child aggregation. Accepts boolean or integer: false/0 = child (variation) mode; true/1 = parent mode. If omitted or null, DSA defaults to child (0). Pass the market's parentDataMode from list_user_markets unless the user explicitly wants the other mode.

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

MT360 Market Overall

get_market_overall
Full Description

Return Overall Market historical series (optional compare) for one MT360 market: interval buckets for a chosen metric, grouped by none/product/brand/competitors/seller type. Requires market_id, overall_show_type (0 revenue, 1 revenue_market_share, 2 units, 3 units_market_share, 4 price). overall_show_type 4 (PRICE) is not allowed with parent_data_mode true/1 (parent aggregation has no meaningful price). group_by_type (0–4), view_by_type (0 weekly, 1 monthly, 2 yearly), date_from and date_to. Pass compared_date_from + compared_date_to together for a compare series. Dates are yyyy-MM-dd and inclusive. MT360 uses Saturday as the weekly cutoff: Mon–Fri the latest allowed end date is the Saturday of the week before last; Saturday–Sunday may use last Saturday. Each provided range must span at least 28 inclusive days. When a compare range is sent (compared_date_from + compared_date_to), the two ranges must be similar length (inclusive day counts differ by at most 5). Always pass parent_data_mode (false/0 = child/variation, true/1 = parent); omitted defaults to child. Do not pass parent_data_mode true/1 together with overall_show_type 4. Prefer the market's parentDataMode from list_user_markets. change is a percent field (e.g. -36.53 means -36.53%) passed through from DSA unchanged — never divide by 100, regardless of marketplace, parent_data_mode, or overall_show_type. For non-Japan markets, when overall_show_type is 0 (revenue) and the response parentDataMode is 0 (child), interval money fields (totalValue, comparedTotalValue, totalActualsValue, comparedTotalActualsValue, diff, diffActuals, changeActuals) are already scaled for display; Japan and other show types are not. intervalNumber -1 is the full-range summary row in intervalsData; when summing or plotting intervalsData, exclude every element with intervalNumber < 0 first. Use page_number/per_page to limit payload size. Not for: share cards (get_market_statistics), ranked leaderboard (get_market_leaderboard), or product catalog (get_market_products).

Parameters (6 required, 7 optional)
Required
date_fromstring

Required primary range start yyyy-MM-dd. Must be on or before date_to. Dates are yyyy-MM-dd and inclusive. MT360 uses Saturday as the weekly cutoff: Mon–Fri the latest allowed end date is the Saturday of the week before last; Saturday–Sunday may use last Saturday. Each provided range must span at least 28 inclusive days.

date_tostring

Required primary range end yyyy-MM-dd. Must be on or after date_from. Dates are yyyy-MM-dd and inclusive. MT360 uses Saturday as the weekly cutoff: Mon–Fri the latest allowed end date is the Saturday of the week before last; Saturday–Sunday may use last Saturday. Each provided range must span at least 28 inclusive days.

group_by_typeinteger

0 NO_GROUP, 1 PRODUCT, 2 BRAND, 3 COMPETITORS, 4 SELLER_TYPE. Do not use 0 with overall_show_type 4 (PRICE); DSA throws Wrong Params Combination.

market_idinteger

Required. MT360/MI market id (from list_user_markets).

overall_show_typeinteger

0 REVENUE, 1 REVENUE_MARKET_SHARE, 2 UNITS, 3 UNITS_MARKET_SHARE, 4 PRICE. PRICE (4) cannot be combined with group_by_type 0 (NO_GROUP); use 1–4. PRICE (4) is not allowed when parent_data_mode is true/1: parent aggregation has no meaningful price.

view_by_typeinteger

0 WEEKLY, 1 MONTHLY, 2 YEARLY.

Optional
compared_date_fromstring

Optional compare range start yyyy-MM-dd. Must be sent together with compared_date_to; omit both to skip the compare period. Dates are yyyy-MM-dd and inclusive. MT360 uses Saturday as the weekly cutoff: Mon–Fri the latest allowed end date is the Saturday of the week before last; Saturday–Sunday may use last Saturday. Each provided range must span at least 28 inclusive days. When a compare range is sent (compared_date_from + compared_date_to), the two ranges must be similar length (inclusive day counts differ by at most 5).

Default: null
compared_date_tostring

Optional compare range end yyyy-MM-dd. Must be sent together with compared_date_from; omit both to skip the compare period. Dates are yyyy-MM-dd and inclusive. MT360 uses Saturday as the weekly cutoff: Mon–Fri the latest allowed end date is the Saturday of the week before last; Saturday–Sunday may use last Saturday. Each provided range must span at least 28 inclusive days. When a compare range is sent (compared_date_from + compared_date_to), the two ranges must be similar length (inclusive day counts differ by at most 5).

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

page_numberinteger

1-based page for grouped tables.

Default: null
parent_data_modeboolean

Parent vs child aggregation. Accepts boolean or integer: false/0 = child (variation) mode; true/1 = parent mode. If omitted or null, DSA defaults to child (0). Pass the market's parentDataMode from list_user_markets unless the user explicitly wants the other mode. On get_market_overall, true/1 (parent) cannot be combined with overall_show_type 4 (PRICE); parent mode has no meaningful price.

Default: null
per_pageinteger

Page size for grouped tables.

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

MT360 Market Products

get_market_products
Full Description

Return paginated current product rows for one MT360 market (ASIN attributes, BSR, brand, category, dynamics, etc.). Values: money fields (totalRevenue, totalRevenueActuals, price, priceDynamic, netPrice, pricePerUnit, fbaFee) are already scaled for display (/100) except Japan (marketplaceId 10); in parent mode (parentDataMode 1) totalRevenue is left at DSA scale. Null and 0 money values are not scaled. listingScore is not scaled. fbaFee, pricePerUnit, price, sizeTier, yearSales, weight, height, width, and length of -1 are returned as null (not /100). sizeTier is a DSA integer (not /100): 1=Small Standard-Size, 2=Large Standard-Size, 3=Small Oversize, 4=Medium Oversize, 5=Large Oversize, 6=Special Oversize, 7=Envelope, 8=Small and Light, 9=Small Letter, 10=Large Letter, 11=Extra Large Letter, 12=Small Envelope, 13=Standard Envelope, 14=Large Envelope, 15=Standard Parcel, 16=Small, 17=Standard Size, 18=Oversize, 19=Standard-Oversize, 20=Heavy and Bulky, 21=Supersize, 22=Extra Large Envelope, 23=Small Parcel. -1 is returned as null; other integers are pass-through. rating/reviews/packageQuantity are positive numbers or null; FBA is a seller-type label (AMZ/FBA/FBM/FLF/MERCH, or '-'). estimatedRevenue, estimatedRevenueDynamic, estimatedSales, and estimatedSalesDynamic are omitted. Requires market_id from list_user_markets plus date_from and date_to (yyyy-MM-dd; prefer list_user_markets defaultDateFrom/To). Dates are yyyy-MM-dd and inclusive. MT360 uses Saturday as the weekly cutoff: Mon–Fri the latest allowed end date is the Saturday of the week before last; Saturday–Sunday may use last Saturday. Each provided range must span at least 28 inclusive days. Keep per_page small (default 10, max 100); use sort (DSA whitelist enum; default -totalRevenue) and current_table_search to narrow results. Pagination: has_more is true when another page of rows exists. On the first request DSA computes total asynchronously to avoid timeouts, so total and last_page may be missing; use has_more (not total) to decide whether to fetch the next page. After the count job finishes, later responses include total and last_page. Always pass parent_data_mode (false/0 = child/variation, true/1 = parent); omitted defaults to child. Prefer the market's parentDataMode from list_user_markets. Not for: share summary (get_market_statistics), top-N leaders (get_market_leaderboard), or time-series overall (get_market_overall).

Parameters (3 required, 7 optional)
Required
date_fromstring

Required primary range start yyyy-MM-dd. Must be on or before date_to. Dates are yyyy-MM-dd and inclusive. MT360 uses Saturday as the weekly cutoff: Mon–Fri the latest allowed end date is the Saturday of the week before last; Saturday–Sunday may use last Saturday. Each provided range must span at least 28 inclusive days.

date_tostring

Required primary range end yyyy-MM-dd. Must be on or after date_from. Dates are yyyy-MM-dd and inclusive. MT360 uses Saturday as the weekly cutoff: Mon–Fri the latest allowed end date is the Saturday of the week before last; Saturday–Sunday may use last Saturday. Each provided range must span at least 28 inclusive days.

market_idinteger

Required. MT360/MI market id (from list_user_markets).

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

current_table_searchstring

Table search string.

Default: null
pageinteger

1-based page (default 1).

Default: null
parent_data_modeboolean

Parent vs child aggregation. Accepts boolean or integer: false/0 = child (variation) mode; true/1 = parent mode. If omitted or null, DSA defaults to child (0). Pass the market's parentDataMode from list_user_markets unless the user explicitly wants the other mode.

Default: null
per_pageinteger

Rows per page (default 10, max 100).

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

sortstring

DSA current-data sort. Prefix '-' for descending. Default -totalRevenue when omitted. Allowed fields: price, createdAt, brand, bestMonth, bbSeller, bsr, sellersQty, FBA, fbaFee, rating, reviews, reviewsDynamic, numberOfImages, sizeTier, height, width, length, weight, variationsCount, netPrice, yearSales, salesYearOverYear, salesChange, priceChange, salesToReviews, totalSales, totalSalesActuals, totalRevenue, totalRevenueActuals. Not asin, parentAsin, or estimatedRevenue.

Options:price-pricecreatedAt-createdAtbrand-brandbestMonth-bestMonthbbSeller-bbSellerbsr-bsrsellersQty-sellersQtyFBA-FBAfbaFee-fbaFeerating-ratingreviews-reviewsreviewsDynamic-reviewsDynamicnumberOfImages-numberOfImagessizeTier-sizeTierheight-heightwidth-widthlength-lengthweight-weightvariationsCount-variationsCountnetPrice-netPriceyearSales-yearSalessalesYearOverYear-salesYearOverYearsalesChange-salesChangepriceChange-priceChangesalesToReviews-salesToReviewstotalSales-totalSalestotalSalesActuals-totalSalesActualstotalRevenue-totalRevenuetotalRevenueActuals-totalRevenueActuals
Default: -totalRevenue

MT360 Market Statistics

get_market_statistics
Full Description

Return headline Market Performance statistics for one MT360 market: my share / revenue / units, total market revenue / units, brand mix, and optional compare-period fields (*Compared, *Change, *Dynamic). Snapshot for the selected date range — not a time series. Values: myMarketShare, myMarketShareCompared, myMarketShareDynamic, and each brands[].brandMarketShare are percent point numbers already (e.g. 12.5 means 12.5%), do not divide by 100. myMarketRevenueChange, myMarketSalesChange, totalRevenueChange, and totalSalesChange are also percent fields passed through from DSA with no scaling (e.g. 10.98 means 10.98%) — never divide them by 100. Revenue fields (myMarketRevenue*, totalRevenue*) are already scaled for display except Japan (marketplaceId 10), which is left at DSA scale. Requires market_id from list_user_markets plus date_from and date_to (yyyy-MM-dd; prefer list_user_markets defaultDateFrom/To). Dates are yyyy-MM-dd and inclusive. MT360 uses Saturday as the weekly cutoff: Mon–Fri the latest allowed end date is the Saturday of the week before last; Saturday–Sunday may use last Saturday. Each provided range must span at least 28 inclusive days. When a compare range is sent (compared_date_from + compared_date_to), the two ranges must be similar length (inclusive day counts differ by at most 5). There is no preset_id or saved-filter input; stats use the market as configured. Pass compared_date_from + compared_date_to together for period-over-period change. Always pass parent_data_mode (false/0 = child/variation, true/1 = parent); omitted defaults to child. Prefer the market's parentDataMode from list_user_markets. Not for: market list (list_user_markets), time series (get_market_overall), ranked leaders (get_market_leaderboard), or product rows (get_market_products).

Parameters (3 required, 5 optional)
Required
date_fromstring

Required primary range start yyyy-MM-dd. Must be on or before date_to. Dates are yyyy-MM-dd and inclusive. MT360 uses Saturday as the weekly cutoff: Mon–Fri the latest allowed end date is the Saturday of the week before last; Saturday–Sunday may use last Saturday. Each provided range must span at least 28 inclusive days.

date_tostring

Required primary range end yyyy-MM-dd. Must be on or after date_from. Dates are yyyy-MM-dd and inclusive. MT360 uses Saturday as the weekly cutoff: Mon–Fri the latest allowed end date is the Saturday of the week before last; Saturday–Sunday may use last Saturday. Each provided range must span at least 28 inclusive days.

market_idinteger

Required. MT360/MI market id (from list_user_markets).

Optional
compared_date_fromstring

Optional compare range start yyyy-MM-dd. Must be sent together with compared_date_to; omit both to skip the compare period. Dates are yyyy-MM-dd and inclusive. MT360 uses Saturday as the weekly cutoff: Mon–Fri the latest allowed end date is the Saturday of the week before last; Saturday–Sunday may use last Saturday. Each provided range must span at least 28 inclusive days. When a compare range is sent (compared_date_from + compared_date_to), the two ranges must be similar length (inclusive day counts differ by at most 5).

Default: null
compared_date_tostring

Optional compare range end yyyy-MM-dd. Must be sent together with compared_date_from; omit both to skip the compare period. Dates are yyyy-MM-dd and inclusive. MT360 uses Saturday as the weekly cutoff: Mon–Fri the latest allowed end date is the Saturday of the week before last; Saturday–Sunday may use last Saturday. Each provided range must span at least 28 inclusive days. When a compare range is sent (compared_date_from + compared_date_to), the two ranges must be similar length (inclusive day counts differ by at most 5).

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

parent_data_modeboolean

Parent vs child aggregation. Accepts boolean or integer: false/0 = child (variation) mode; true/1 = parent mode. If omitted or null, DSA defaults to child (0). Pass the market's parentDataMode from list_user_markets unless the user explicitly wants the other mode.

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

MCP Usage Info

get_mcp_usage_info
Full Description

Returns the current caller's MCP tool-call remaining usage quota for the current period: the account id, the period limit, how many calls were used and how many remain. Calling this tool does not itself consume quota.

Parameters (0 required, 1 optional)
Optional
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Get Monitoring Status

get_monitoring_status
Full Description

Helium 10 Alerts — a seller's monitoring status. Omit asin for an account overview: total/used/available monitoring slots and the list of monitored ASINs (asins[]) with their marketplace, seller SKU and monitoring start date. Pass asin to get asin_rows[] — one row per marketplace the ASIN appears in, each with is_monitored, marketplace and seller SKU. Essential for distinguishing 'no changes' from 'not monitored' when other Alerts tools return empty.

Parameters (1 required, 3 optional)
Required
seller_idstring

Helium 10 seller identifier.

Optional
asinstring

Optional ASIN. Omit for the account overview; pass an ASIN to check whether it is currently monitored.

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Get My Amazon Seller Accounts

get_my_amazon_seller_accounts
Full Description

What: Return the caller's bound Amazon seller accounts (one row per SP-API token / seller binding). Each row includes seller_id, marketplace_list (short country codes), region (NA / EU / FE), status (whether the binding is still valid), optional alias, and created_at (UTC bind time). No required input — default returns all bindings (active and inactive). Optional status filter narrows to valid-only or invalid-only.

When to use: User (or agent) needs to know which seller IDs and marketplaces are available for this account before calling other Commerce tools; wants to list / audit linked Amazon seller accounts; needs to distinguish active vs revoked / invalid tokens; wants a human-readable alias when present.

When NOT to use:

Brand Registry / SQA seller × marketplace picker → get_brand_seller_profiles (ResearchMCP). Use that tool when the next call is Brand-Registry–gated (e.g. get_search_query_performance, ABA Brand Analytics), or the user only needs a Brand-Registered seller_id + one marketplace from marketplaces[]. It filters out non–Brand-Registered and does not return region / status / alias / created_at, and its marketplace enum is narrower (US/UK/DE/JP/CA/FR/IT/ES). Do not use this Commerce tool as a substitute for that picker, and do not use get_brand_seller_profiles when you need the full SP-API binding roster for P&L / inventory / COGS / Indirect Costs.

Product catalog / SKU browse → list_my_products (HP-1267)

P&L, inventory, COGS, or Indirect Costs metrics / CRUD → the dedicated tools for those domains

Discovering Amazon sellers that are not linked to this H10 account

Guidance: Call with no arguments first to discover the full set of seller_id + marketplace_list values, then pass those into downstream Commerce tools' seller_ids / marketplace filters. Prefer status=true when the user only wants currently usable sellers. Do not invent seller IDs or marketplaces. If the task is specifically SQA / Brand Analytics and Brand Registry eligibility matters, prefer get_brand_seller_profiles instead.

Parameters (0 required, 3 optional)
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

statusboolean

Filter by binding validity. Omit / null (default) = return ALL sellers (active + inactive). true = only valid/active bindings. false = only invalid/inactive bindings.

Default: null

Get My Walmart Seller Accounts

get_my_wmt_seller_accounts
Full Description

What: Return the caller's bound WALMART seller accounts (one row per Walmart auth-token binding). Each row includes seller_id (Walmart partner id — the same value space as seller_ids on the other Walmart Commerce tools), marketplace_list (day-1 always ['US']), status (whether the binding is still valid), optional alias, and created_at (UTC bind time, ISO-8601 with 'Z'). No required input — default returns all bindings (active and inactive). Optional status filter narrows to valid-only or invalid-only. There is no region field for Walmart.

When to use: User (or agent) needs to know which Walmart seller IDs (partner ids) and marketplaces are available for this account before calling other Walmart Commerce tools; wants to list / audit linked Walmart seller accounts; needs to distinguish active vs revoked / invalid tokens; wants a human-readable alias when present.

When NOT to use:

Amazon seller discovery → get_my_amazon_seller_accounts

Amazon Brand Registry / SQA picker → get_brand_seller_profiles (ResearchMCP; Amazon-only)

Walmart P&L / inventory / product metrics → the dedicated Walmart Commerce tools for those domains

Walmart Ads profile / shop-to-ads-account mapping → Ads MCP (not this Commerce roster)

Discovering Walmart sellers that are not linked to this H10 account

Guidance: Call with no arguments first to discover the full set of seller_id + marketplace_list values, then pass those into downstream Walmart tools' seller_ids / marketplace filters. Prefer status=true when the user only wants currently usable sellers. Do not invent seller IDs or marketplaces. Do not mix Walmart seller_id values with Amazon seller IDs.

Parameters (0 required, 3 optional)
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

statusboolean

Filter by binding validity. Omit / null (default) = return ALL Walmart sellers (active + inactive). true = only valid/active bindings. false = only invalid/inactive bindings. Must be a JSON boolean — 1 / 0 are INVALID_INPUT, not shorthand for true / false.

Default: null

Get Product Live Status

get_product_live_status
Full Description

Helium 10 Alerts — current attribute snapshot for one ASIN: price, FBA fee, Buy Box owner, number of sellers, listing status (active/suppressed/inactive), is_adult_flagged, has_returned_tag (Frequently Returned Item badge), category, brand, main image, package dimensions (size_tier) and last-updated time. Answers 'what is it now?' (current state), as opposed to search_alert_events ('what changed'). The ASIN must have monitoring enabled; querying an unmonitored ASIN returns an INVALID_INPUT error.

Parameters (3 required, 2 optional)
Required
asinstring

Amazon ASIN to query, 10-char alphanumeric (e.g. B01LR5S6HK).

marketplacestring

Marketplace code: US, UK, DE, JP, etc.

Options:USCAMXDEESITFRUKINNLAUJPAEBRSA
seller_idstring

Helium 10 seller identifier.

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Product P&L Breakdown

get_product_profit_and_loss_breakdown
Full Description

Helium 10 Product P&L Breakdown (formerly Profits). Returns per-product breakdown snapshots in rows — product info plus nested metrics per requested breakdown key, showing which fee type, ad channel, or cost component drives each metric per product. Use to diagnose why a specific ASIN has unexpectedly high costs, compare fee/ad-spend breakdowns across products, and find the most favorable cost structures. Not for: per-product Level 1 only (use get_product_profit_and_loss_summary); account breakdown (use get_account_profit_and_loss_breakdown); breakdown trends (use get_product_profit_and_loss_breakdown_series). A cost_of_goods or indirect_cost node of 0 may mean the cost was never configured rather than genuinely zero — verify with list_amazon_cogs / list_amazon_indirect_cost_settings before treating the cost picture as complete.Comparing two periods? Both must span the same number of days: read data.meta.period_days from each response and require them to match. A 30-day window against a 31-day one inflates every percentage delta by roughly 2pp. If they differ, align the windows, switch to daily averages, or state the difference and its effect on every percentage you report.Amounts are converted into the requested currency per marketplace before aggregation; omitting marketplace means the figures are the combined total across every authorised marketplace, so say so when reporting them. data.meta echoes both.

Parameters (2 required, 14 optional)
Required
current_date_fromstring

Inclusive start calendar date in date_tz, YYYY-MM-DD only (no time). Use the exact parameter name current_date_from; do not use start_date, date_from, or from_date. Must be <= current_date_to.

current_date_tostring

Inclusive end calendar date in date_tz, YYYY-MM-DD only (no time). Use the exact parameter name current_date_to; do not use end_date, date_to, or to_date. Must be >= current_date_from. A value after today in date_tz is silently clamped to today in date_tz (the future has no data).

Optional
asinsarray

Optional. SQL IN filter by ASIN list (array of strings, e.g. ['B001234567']). Default null (all ASINs).

Default: null
breakdown_metricsarray

Optional. Only 11 metrics support sub-component breakdown: sales, units_sold, refund, advertising_cost, amazon_fees, reimbursements, cost_of_goods, indirect_cost, gross_revenue, sessions, units_returned. The other 10 (promo, estimated_payout, gross_profit, expenses, net_profit, margin, roi, tacos, ads_acos, refunds_percentage) are derived metrics — use summary tools for those. Default null = all 11.

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

currencystring

ISO 4217 code for amounts. Optional, defaults to USD.

Options:AEDAUDBRLCADCNYEGPEURGBPINRJPYMXNPLNSARSEKSGDTRYUSDZAR
Default: USD
date_tzstring

Timezone used to interpret calendar dates. Must be one of the Amazon marketplace report timezones (not any IANA timezone). Examples: America/Los_Angeles, Europe/Paris, Europe/London. Italy/Germany/Spain use Europe/Paris (not Europe/Rome or Europe/Berlin). Do not pass a city name, abbreviation, or UTC offset. Optional; when omitted, defaults to the queried marketplace's report timezone (America/Los_Angeles when no single marketplace is set).

Options:Africa/CairoAfrica/JohannesburgAmerica/Los_AngelesAmerica/Sao_PauloAsia/DubaiAsia/KolkataAsia/RiyadhAsia/ShanghaiAsia/SingaporeAsia/TokyoAustralia/SydneyEurope/AmsterdamEurope/BrusselsEurope/DublinEurope/IstanbulEurope/LondonEurope/ParisEurope/StockholmEurope/Warsaw
Default: null
marketplacearray

Optional marketplace filter as an array of region short codes ONLY (e.g. ['US', 'CA', 'MX']); Amazon SP-API marketplace IDs (e.g. 'ATVPDKIKX0DER'), seller IDs, and domains are rejected. Allowed: AE, AU, BE, BR, CA, CN, DE, EG, ES, FR, IE, IN, IT, JP, MX, NL, PL, SA, SE, SG, TR, UK, US, ZA. Default null (all authorised marketplaces).

Default: null
page_indexinteger

Optional. Page number (integer), starts from 1. Default 1.

Default: null
page_sizeinteger

Optional. Rows per page (integer). Min 5, max 1000. Default 50.

Default: null
product_levelstring

Row aggregation: sku | asin | parent_asin. Parent ASIN groups child ASINs; one ASIN may map to multiple SKUs.

Options:asinskuparent_asin
Default: sku
seller_idsarray

Optional. SQL IN filter on seller account IDs (array of strings). Profits intersects with sellers from Pacvue token; no intersection → empty result. Default null (all authorised sellers).

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

skusarray

Optional. SQL IN filter by seller SKU list (array of strings). Default null (all SKUs).

Default: null
sort_bystring

Optional. Metric to sort product rows by. Sort is applied to the top-level metric value per product row. If omitted, server default order applies. Allowed values: sales, units_sold, refund, advertising_cost, amazon_fees, reimbursements, cost_of_goods, indirect_cost, gross_revenue, sessions, units_returned. Cost-type metrics (refund, advertising_cost, amazon_fees, cost_of_goods, indirect_cost) are returned as negative values and are ordered by ABSOLUTE amount, not signed value: sort_order=desc lists the highest spend/cost first and asc the lowest.

Options:salesunits_soldrefundadvertising_costamazon_feesreimbursementscost_of_goodsindirect_costgross_revenuesessionsunits_returned
Default: null
sort_orderstring

Optional. Sort direction for sort_by. 'desc' = highest value first (default); 'asc' = lowest value first. Ignored if sort_by is not provided.

Default: null

Product P&L Breakdown Trends

get_product_profit_and_loss_breakdown_series
Full Description

Helium 10 Product P&L Breakdown Trends (formerly Profits). Returns a per-product breakdown time series (nested values on children) — the largest Phase 1 payload. Use when you need product-level granularity, fee/cost-component drill-down, and over-time trends all at once — e.g. how a specific ASIN's FBA fee changed month over month. Keep breakdown_metrics, filters, and page_size minimal. Not for: a snapshot (use get_product_profit_and_loss_breakdown); Level 1 trends only (use get_product_profit_and_loss_summary_series); account breakdown trends (use get_account_profit_and_loss_breakdown_series). A cost_of_goods or indirect_cost node of 0 may mean the cost was never configured rather than genuinely zero — verify with list_amazon_cogs / list_amazon_indirect_cost_settings before treating the cost picture as complete.Comparing two periods? Both must span the same number of days: read data.meta.period_days from each response and require them to match. A 30-day window against a 31-day one inflates every percentage delta by roughly 2pp. If they differ, align the windows, switch to daily averages, or state the difference and its effect on every percentage you report.Amounts are converted into the requested currency per marketplace before aggregation; omitting marketplace means the figures are the combined total across every authorised marketplace, so say so when reporting them. data.meta echoes both.

Parameters (3 required, 14 optional)
Required
current_date_fromstring

Inclusive start calendar date in date_tz, YYYY-MM-DD only (no time). Use the exact parameter name current_date_from; do not use start_date, date_from, or from_date. Must be <= current_date_to.

current_date_tostring

Inclusive end calendar date in date_tz, YYYY-MM-DD only (no time). Use the exact parameter name current_date_to; do not use end_date, date_to, or to_date. Must be >= current_date_from. A value after today in date_tz is silently clamped to today in date_tz (the future has no data).

granularitystring

Time-bucket size for series tools: day | week | month. Use the exact parameter name granularity; do not use scope, interval, period, or bucket as input aliases. Week/month align to calendar boundaries (week starts Monday; month starts on the 1st); first/last buckets may be partial. The first bucket key may precede current_date_from (e.g. from 2026-04-01 at week granularity → first key 2026-03-30). Partial buckets include only data inside the requested date range. Series responses no longer include the scope or offset fields (removed in HP-1495); use the request granularity you sent.

Options:dayweekmonth
Optional
asinsarray

Optional. SQL IN filter by ASIN list (array of strings, e.g. ['B001234567']). Default null (all ASINs).

Default: null
breakdown_metricsarray

Optional. Only 11 metrics support sub-component breakdown: sales, units_sold, refund, advertising_cost, amazon_fees, reimbursements, cost_of_goods, indirect_cost, gross_revenue, sessions, units_returned. The other 10 (promo, estimated_payout, gross_profit, expenses, net_profit, margin, roi, tacos, ads_acos, refunds_percentage) are derived metrics — use summary tools for those. Default null = all 11.

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

currencystring

ISO 4217 code for amounts. Optional, defaults to USD.

Options:AEDAUDBRLCADCNYEGPEURGBPINRJPYMXNPLNSARSEKSGDTRYUSDZAR
Default: USD
date_tzstring

Timezone used to interpret calendar dates. Must be one of the Amazon marketplace report timezones (not any IANA timezone). Examples: America/Los_Angeles, Europe/Paris, Europe/London. Italy/Germany/Spain use Europe/Paris (not Europe/Rome or Europe/Berlin). Do not pass a city name, abbreviation, or UTC offset. Optional; when omitted, defaults to the queried marketplace's report timezone (America/Los_Angeles when no single marketplace is set).

Options:Africa/CairoAfrica/JohannesburgAmerica/Los_AngelesAmerica/Sao_PauloAsia/DubaiAsia/KolkataAsia/RiyadhAsia/ShanghaiAsia/SingaporeAsia/TokyoAustralia/SydneyEurope/AmsterdamEurope/BrusselsEurope/DublinEurope/IstanbulEurope/LondonEurope/ParisEurope/StockholmEurope/Warsaw
Default: null
marketplacearray

Optional marketplace filter as an array of region short codes ONLY (e.g. ['US', 'CA', 'MX']); Amazon SP-API marketplace IDs (e.g. 'ATVPDKIKX0DER'), seller IDs, and domains are rejected. Allowed: AE, AU, BE, BR, CA, CN, DE, EG, ES, FR, IE, IN, IT, JP, MX, NL, PL, SA, SE, SG, TR, UK, US, ZA. Default null (all authorised marketplaces).

Default: null
page_indexinteger

Optional. Page number (integer), starts from 1. Default 1.

Default: null
page_sizeinteger

Optional. Rows per page (integer). Min 5, max 1000. Default 50.

Default: null
product_levelstring

Row aggregation: sku | asin | parent_asin. Parent ASIN groups child ASINs; one ASIN may map to multiple SKUs.

Options:asinskuparent_asin
Default: sku
seller_idsarray

Optional. SQL IN filter on seller account IDs (array of strings). Profits intersects with sellers from Pacvue token; no intersection → empty result. Default null (all authorised sellers).

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

skusarray

Optional. SQL IN filter by seller SKU list (array of strings). Default null (all SKUs).

Default: null
sort_bystring

Optional. Metric to sort product rows by. Sort is applied to the top-level metric value per product row. If omitted, server default order applies. Allowed values: sales, units_sold, refund, advertising_cost, amazon_fees, reimbursements, cost_of_goods, indirect_cost, gross_revenue, sessions, units_returned. Cost-type metrics (refund, advertising_cost, amazon_fees, cost_of_goods, indirect_cost) are returned as negative values and are ordered by ABSOLUTE amount, not signed value: sort_order=desc lists the highest spend/cost first and asc the lowest.

Options:salesunits_soldrefundadvertising_costamazon_feesreimbursementscost_of_goodsindirect_costgross_revenuesessionsunits_returned
Default: null
sort_orderstring

Optional. Sort direction for sort_by. 'desc' = highest value first (default); 'asc' = lowest value first. Ignored if sort_by is not provided.

Default: null

Product P&L Summary

get_product_profit_and_loss_summary
Full Description

Helium 10 Product P&L Summary (formerly Profits). Returns product-level P&L SNAPSHOTS — one row per product_level (sku | asin | parent_asin) with identity fields and a single Level 1 metrics map covering the WHOLE date range; NO time buckets, no trend, no breakdown trees. Use to rank products by profitability for one period, compare margin across the catalog, flag loss-making SKUs, build a product-level report. IMPORTANT: if the question mentions a TREND or change OVER TIME (daily/weekly, 'over the last N days', 'units sold trend', etc.) use get_product_profit_and_loss_summary_series instead — it ranks top-N AND returns the time series in one call. Not for: store-wide totals (use get_account_profit_and_loss_summary); per-product trends (use get_product_profit_and_loss_summary_series); per-product drill-down (use get_product_profit_and_loss_breakdown). A cost_of_goods or indirect_cost of 0 on any row may mean the cost was never configured rather than genuinely zero — data.caveats flags that when it happens. Verify with list_amazon_cogs / list_amazon_indirect_cost_settings before describing the figures as normal: net_profit and margin are upper bounds until you do.Comparing two periods? Both must span the same number of days: read data.meta.period_days from each response and require them to match. A 30-day window against a 31-day one inflates every percentage delta by roughly 2pp. If they differ, align the windows, switch to daily averages, or state the difference and its effect on every percentage you report.Amounts are converted into the requested currency per marketplace before aggregation; omitting marketplace means the figures are the combined total across every authorised marketplace, so say so when reporting them. data.meta echoes both.

Parameters (2 required, 13 optional)
Required
current_date_fromstring

Inclusive start calendar date in date_tz, YYYY-MM-DD only (no time). Use the exact parameter name current_date_from; do not use start_date, date_from, or from_date. Must be <= current_date_to.

current_date_tostring

Inclusive end calendar date in date_tz, YYYY-MM-DD only (no time). Use the exact parameter name current_date_to; do not use end_date, date_to, or to_date. Must be >= current_date_from. A value after today in date_tz is silently clamped to today in date_tz (the future has no data).

Optional
asinsarray

Optional. SQL IN filter by ASIN list (array of strings, e.g. ['B001234567']). Default null (all ASINs).

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

currencystring

ISO 4217 code for amounts. Optional, defaults to USD.

Options:AEDAUDBRLCADCNYEGPEURGBPINRJPYMXNPLNSARSEKSGDTRYUSDZAR
Default: USD
date_tzstring

Timezone used to interpret calendar dates. Must be one of the Amazon marketplace report timezones (not any IANA timezone). Examples: America/Los_Angeles, Europe/Paris, Europe/London. Italy/Germany/Spain use Europe/Paris (not Europe/Rome or Europe/Berlin). Do not pass a city name, abbreviation, or UTC offset. Optional; when omitted, defaults to the queried marketplace's report timezone (America/Los_Angeles when no single marketplace is set).

Options:Africa/CairoAfrica/JohannesburgAmerica/Los_AngelesAmerica/Sao_PauloAsia/DubaiAsia/KolkataAsia/RiyadhAsia/ShanghaiAsia/SingaporeAsia/TokyoAustralia/SydneyEurope/AmsterdamEurope/BrusselsEurope/DublinEurope/IstanbulEurope/LondonEurope/ParisEurope/StockholmEurope/Warsaw
Default: null
marketplacearray

Optional marketplace filter as an array of region short codes ONLY (e.g. ['US', 'CA', 'MX']); Amazon SP-API marketplace IDs (e.g. 'ATVPDKIKX0DER'), seller IDs, and domains are rejected. Allowed: AE, AU, BE, BR, CA, CN, DE, EG, ES, FR, IE, IN, IT, JP, MX, NL, PL, SA, SE, SG, TR, UK, US, ZA. Default null (all authorised marketplaces).

Default: null
page_indexinteger

Optional. Page number (integer), starts from 1. Default 1.

Default: null
page_sizeinteger

Optional. Rows per page (integer). Min 5, max 1000. Default 50.

Default: null
product_levelstring

Row aggregation: sku | asin | parent_asin. Parent ASIN groups child ASINs; one ASIN may map to multiple SKUs.

Options:asinskuparent_asin
Default: sku
seller_idsarray

Optional. SQL IN filter on seller account IDs (array of strings). Profits intersects with sellers from Pacvue token; no intersection → empty result. Default null (all authorised sellers).

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

skusarray

Optional. SQL IN filter by seller SKU list (array of strings). Default null (all SKUs).

Default: null
sort_bystring

Optional. Metric to sort product rows by. Rows are ordered by the metric's value over the queried date range. If omitted, server default order applies. Allowed values: sales, units_sold, units_returned, refund, promo, advertising_cost, amazon_fees, reimbursements, estimated_payout, cost_of_goods, gross_revenue, gross_profit, expenses, indirect_cost, net_profit, margin, roi, tacos, ads_acos, refunds_percentage, sessions. Cost-type metrics (refund, promo, advertising_cost, amazon_fees, cost_of_goods, expenses, indirect_cost) are returned as negative values and are ordered by ABSOLUTE amount, not signed value: sort_order=desc lists the highest spend/cost first and asc the lowest.

Options:salesunits_soldunits_returnedrefundpromoadvertising_costamazon_feesreimbursementsestimated_payoutcost_of_goodsgross_revenuegross_profitexpensesindirect_costnet_profitmarginroitacosads_acosrefunds_percentagesessions
Default: null
sort_orderstring

Optional. Sort direction for sort_by. 'desc' = highest value first (default); 'asc' = lowest value first. Ignored if sort_by is not provided.

Default: null

Product P&L Trends

get_product_profit_and_loss_summary_series
Full Description

Helium 10 Product P&L Trends (formerly Profits). Returns per-product Level 1 P&L TIME SERIES — each row carries product info plus metric_series (metric_key, values) bucketed by granularity (day | week | month). THIS is the tool whenever the question asks how a metric moves OVER TIME — trend, trajectory, 'over the last N days', daily/weekly, 'units sold trend', 'revenue over time', 'net profit trend'. It ALSO ranks: sort_by + page_size return the top-N products (e.g. top 10 by net_profit) EACH with its metric_series, so 'top-N products' TREND' is a single call here (do NOT use the snapshot tool for that). No breakdown trees. Not for: a point-in-time snapshot with no time buckets (use get_product_profit_and_loss_summary); account trends (use get_account_profit_and_loss_summary_series); breakdown trends (use get_product_profit_and_loss_breakdown_series). A cost_of_goods or indirect_cost series that is 0 in every bucket may mean the cost was never configured rather than genuinely zero — data.caveats flags that when it happens. Verify with list_amazon_cogs / list_amazon_indirect_cost_settings before describing the figures as normal: net_profit and margin are upper bounds until you do.Comparing two periods? Both must span the same number of days: read data.meta.period_days from each response and require them to match. A 30-day window against a 31-day one inflates every percentage delta by roughly 2pp. If they differ, align the windows, switch to daily averages, or state the difference and its effect on every percentage you report.Amounts are converted into the requested currency per marketplace before aggregation; omitting marketplace means the figures are the combined total across every authorised marketplace, so say so when reporting them. data.meta echoes both.

Parameters (3 required, 13 optional)
Required
current_date_fromstring

Inclusive start calendar date in date_tz, YYYY-MM-DD only (no time). Use the exact parameter name current_date_from; do not use start_date, date_from, or from_date. Must be <= current_date_to.

current_date_tostring

Inclusive end calendar date in date_tz, YYYY-MM-DD only (no time). Use the exact parameter name current_date_to; do not use end_date, date_to, or to_date. Must be >= current_date_from. A value after today in date_tz is silently clamped to today in date_tz (the future has no data).

granularitystring

Time-bucket size for series tools: day | week | month. Use the exact parameter name granularity; do not use scope, interval, period, or bucket as input aliases. Week/month align to calendar boundaries (week starts Monday; month starts on the 1st); first/last buckets may be partial. The first bucket key may precede current_date_from (e.g. from 2026-04-01 at week granularity → first key 2026-03-30). Partial buckets include only data inside the requested date range. Series responses no longer include the scope or offset fields (removed in HP-1495); use the request granularity you sent.

Options:dayweekmonth
Optional
asinsarray

Optional. SQL IN filter by ASIN list (array of strings, e.g. ['B001234567']). Default null (all ASINs).

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

currencystring

ISO 4217 code for amounts. Optional, defaults to USD.

Options:AEDAUDBRLCADCNYEGPEURGBPINRJPYMXNPLNSARSEKSGDTRYUSDZAR
Default: USD
date_tzstring

Timezone used to interpret calendar dates. Must be one of the Amazon marketplace report timezones (not any IANA timezone). Examples: America/Los_Angeles, Europe/Paris, Europe/London. Italy/Germany/Spain use Europe/Paris (not Europe/Rome or Europe/Berlin). Do not pass a city name, abbreviation, or UTC offset. Optional; when omitted, defaults to the queried marketplace's report timezone (America/Los_Angeles when no single marketplace is set).

Options:Africa/CairoAfrica/JohannesburgAmerica/Los_AngelesAmerica/Sao_PauloAsia/DubaiAsia/KolkataAsia/RiyadhAsia/ShanghaiAsia/SingaporeAsia/TokyoAustralia/SydneyEurope/AmsterdamEurope/BrusselsEurope/DublinEurope/IstanbulEurope/LondonEurope/ParisEurope/StockholmEurope/Warsaw
Default: null
marketplacearray

Optional marketplace filter as an array of region short codes ONLY (e.g. ['US', 'CA', 'MX']); Amazon SP-API marketplace IDs (e.g. 'ATVPDKIKX0DER'), seller IDs, and domains are rejected. Allowed: AE, AU, BE, BR, CA, CN, DE, EG, ES, FR, IE, IN, IT, JP, MX, NL, PL, SA, SE, SG, TR, UK, US, ZA. Default null (all authorised marketplaces).

Default: null
page_indexinteger

Optional. Page number (integer), starts from 1. Default 1.

Default: null
page_sizeinteger

Optional. Rows per page (integer). Min 5, max 1000. Default 50.

Default: null
product_levelstring

Row aggregation: sku | asin | parent_asin. Parent ASIN groups child ASINs; one ASIN may map to multiple SKUs.

Options:asinskuparent_asin
Default: sku
seller_idsarray

Optional. SQL IN filter on seller account IDs (array of strings). Profits intersects with sellers from Pacvue token; no intersection → empty result. Default null (all authorised sellers).

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

skusarray

Optional. SQL IN filter by seller SKU list (array of strings). Default null (all SKUs).

Default: null
sort_bystring

Optional. Metric to sort product rows by. Rows are ordered by the metric's value over the queried date range. If omitted, server default order applies. Allowed values: sales, units_sold, units_returned, refund, promo, advertising_cost, amazon_fees, reimbursements, estimated_payout, cost_of_goods, gross_revenue, gross_profit, expenses, indirect_cost, net_profit, margin, roi, tacos, ads_acos, refunds_percentage, sessions. Cost-type metrics (refund, promo, advertising_cost, amazon_fees, cost_of_goods, expenses, indirect_cost) are returned as negative values and are ordered by ABSOLUTE amount, not signed value: sort_order=desc lists the highest spend/cost first and asc the lowest.

Options:salesunits_soldunits_returnedrefundpromoadvertising_costamazon_feesreimbursementsestimated_payoutcost_of_goodsgross_revenuegross_profitexpensesindirect_costnet_profitmarginroitacosads_acosrefunds_percentagesessions
Default: null
sort_orderstring

Optional. Sort direction for sort_by. 'desc' = highest value first (default); 'asc' = lowest value first. Ignored if sort_by is not provided.

Default: null

Get Sales Velocity

get_sales_velocity
Full Description

Return units sold over time (sales velocity) per product row, bucketed by day / week / month over an inclusive date range. Each row includes product information (including fulfillment_type). Not a single snapshot; not revenue, fees, or other P&L metrics. Use when the user asks how units sold trend, compare periods, velocity by SKU/ASIN, or needs time-bucketed unit counts for inventory / restock planning. Not for: snapshot on-hand / inbound quantities (use get_inventory_values); FBA health / aging (use get_fba_inventory_health_status); full P&L trends (use get_product_profit_and_loss_summary_series or get_account_profit_and_loss_summary_series). Date range and granularity are OPTIONAL: omit BOTH current_date_from and current_date_to to default to the most recent 30 calendar days (in date_tz), and omit granularity to default to daily buckets — so 'recent sales velocity' needs no date/granularity args. Providing only one date endpoint is an error. Narrow with seller_ids, marketplace, asins, skus, fulfillment_type, and pagination. Prefer this over product P&L series when only units sold matter (smaller payload).

Parameters (0 required, 13 optional)
Optional
asinsarray

Optional. SQL IN filter by ASIN list (array of strings, e.g. ['B001234567']). Default null (all ASINs).

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

current_date_fromstring

Optional inclusive start day in date_tz, YYYY-MM-DD (no time). Omit BOTH current_date_from and current_date_to to default to the most recent 30 calendar days (current_date_to = today in date_tz, current_date_from = today - 29). Providing only one of the two endpoints is an error (INVALID_INPUT).

Default: null
current_date_tostring

Optional inclusive end day in date_tz, YYYY-MM-DD (no time). Omit BOTH endpoints to default to the most recent 30 calendar days. Providing only one of the two endpoints is an error (INVALID_INPUT). A value after today in date_tz is silently clamped to today in date_tz (the future has no data).

Default: null
date_tzstring

Timezone used to interpret calendar dates. Must be one of the Amazon marketplace report timezones (not any IANA timezone). Examples: America/Los_Angeles, Europe/Paris, Europe/London. Italy/Germany/Spain use Europe/Paris (not Europe/Rome or Europe/Berlin). Do not pass a city name, abbreviation, or UTC offset. Optional; when omitted, defaults to the queried marketplace's report timezone (America/Los_Angeles when no single marketplace is set).

Options:Africa/CairoAfrica/JohannesburgAmerica/Los_AngelesAmerica/Sao_PauloAsia/DubaiAsia/KolkataAsia/RiyadhAsia/ShanghaiAsia/SingaporeAsia/TokyoAustralia/SydneyEurope/AmsterdamEurope/BrusselsEurope/DublinEurope/IstanbulEurope/LondonEurope/ParisEurope/StockholmEurope/Warsaw
Default: null
fulfillment_typestring

Optional fulfillment channel filter: FBA | FBM. Omit to query both FBA and FBM inventory.

Default: null
granularitystring

Optional time bucket size: day | week | month. Omit to default to 'day'. Week/month align to calendar boundaries (Mon start / 1st); first/last buckets may be partial.

Options:dayweekmonth
Default: null
marketplacearray

Optional marketplace filter as an array of region short codes ONLY (e.g. ['US', 'CA', 'MX']); Amazon SP-API marketplace IDs (e.g. 'ATVPDKIKX0DER'), seller IDs, and domains are rejected. Allowed: AE, AU, BE, BR, CA, CN, DE, EG, ES, FR, IE, IN, IT, JP, MX, NL, PL, SA, SE, SG, TR, UK, US, ZA. Default null (all authorised marketplaces).

Default: null
page_indexinteger

Optional. Page number (integer), starts from 1. Default 1.

Default: null
page_sizeinteger

Optional. Rows per page (integer). Min 5, max 1000. Default 50.

Default: null
seller_idsarray

Optional. SQL IN filter on seller account IDs (array of strings). Profits intersects with sellers from Pacvue token; no intersection → empty result. Default null (all authorised sellers).

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

skusarray

Optional. SQL IN filter by seller SKU list (array of strings). Default null (all SKUs).

Default: null

Search Query Analyzer

get_search_query_performance
Full Description

Helium 10 Search Query Analyzer (SQA). Reads Amazon Search Query Performance (SQP) funnel data for 1–20 Brand-Registered ASINs over 1–12 weekly or monthly periods: a summary header (16 aggregate metrics, always over the FULL query result) plus a per-query keywords[] table (45 fields covering the impression→click→cart→purchase funnel, your share at each stage, PPC, ABA shares, and CPR), sorted by search volume descending. Use for conversion-truth diagnostics vs the market — where you lose CTR/CVR, which queries drag you down, how much purchase share you leave on the table, and WoW/MoM funnel shifts. Returns up to limit rows per call (default 50, max 10000); one page inlines at most ~500 rows / ~1MB, and requests far above that (>1000 rows or >~2MB) are delivered as a download link instead of inline rows. If data.pagination.has_more is true the result is incomplete: call again with cursor = data.pagination.next_cursor, but prefer narrowing filters over paginating through everything. Cursors expire 30 minutes after being issued and are bound to the query that issued them. Set response_format='download' when the user explicitly wants the data as a file. REQUIRES Brand Registry. Needs (seller_id, marketplace) — if the user names neither, call get_brand_seller_profiles first. Not for: reverse keyword search on one ASIN (use get_keywords_by_asin); scoring a finalized keyword list (use analyze_keywords).

Parameters (5 required, 7 optional)
Required
asinarray

1 to 20 Amazon ASINs to aggregate (each exactly 10 uppercase letters or digits, e.g. B07XYZ1234).

marketplacestring

Amazon marketplace code. Must be one of: US, CA, MX, BR, DE, ES, FR, IT, UK, NL, TR, IN, AE, EG, SA, SE, PL, JP, AU, SG, BE, ZA, IE. Must be a marketplace in which the given seller_id is visible to the caller's Helium 10 account; if not, returns INTEGRATION.SELLER_NOT_ELIGIBLE. When obtained via get_brand_seller_profiles, must be one value from that row's marketplaces[].

Options:USCAMXBRDEESFRITUKNLTRINAEEGSASEPLJPAUSGBEZAIE
seller_idstring

Amazon Seller Central seller ID (pattern ^A[A-Z0-9]{9,20}$), e.g. 'A1B2C3D4E5XYZ'. May be provided directly by the user or obtained from get_brand_seller_profiles.data.sellers[].seller_id. Must belong to a seller linked to the caller's Helium 10 account and enrolled in Amazon Brand Registry; if it is not linked, not Brand-Registered, or the marketplace is not available for this seller, returns INTEGRATION.SELLER_NOT_ELIGIBLE.

time_dimensionstring

Aggregation period type: 'week' (ISO week labels in time_period) or 'month' (YYYY-MM labels).

Options:weekmonth
time_periodarray

1 to 12 time periods to aggregate. When time_dimension is 'week', use ISO week labels (e.g. 2026-W18). When time_dimension is 'month', use YYYY-MM (e.g. 2026-04). Multiple periods are aggregated server-side into one row per search_query.

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

cursorstring

Opaque pagination cursor from a previous response's pagination.next_cursor. Omit for the first page. Pass it back verbatim with the same query arguments (limit may change between pages); never construct or edit it. Cursors are reusable but expire 30 minutes after being issued (pagination.cursor_expires_at) and are bound to the query that issued them.

Default: null
export_formatstring

File format when results are delivered as a download (ignored for inline delivery). 'json' (default): gzip-compressed JSON, best for programmatic analysis. 'csv': UTF-8 CSV that opens directly in Excel/Sheets - prefer it when the user wants a spreadsheet/report file. Columns are the union of row fields; nested values stay JSON-encoded.

Options:jsoncsv
Default: json
fieldsarray

Optional projection: return only these row fields, to save tokens when you need a few columns. Unknown names get a self-healing error listing the available fields. Overrides detail_level when both are set. Omit for the full field set.

Default: null
limitinteger

Number of rows to return. Defaults to 50, max 10000; out-of-range values are clamped rather than rejected. Rows are large (~1KB per row), so request only what the user needs — up to 500 rows per page come back inline (slightly larger asks are truncated and continue via `cursor`); requests far above the inline budget (>1000 rows or very large payloads) are delivered as a download link (response_format=auto). When pagination.has_more is true, fetch the next batch with `cursor`. Do NOT probe with limit=1 to learn the dataset size — every page carries the same total_count/has_more metadata, so ask for the rows you actually need and read the metadata of that response.

Default: 50
response_formatstring

How results are delivered. 'auto' (default): rows are returned inline when they fit the response budget, otherwise they are exported to a file and data.export.download_url is returned instead — so simply request the amount of data you need via `limit`. 'inline': always inline, oversized pages are truncated and continue via cursor. 'download': always a downloadable file, even for small results; the file contains exactly the window selected by `limit`/`cursor`, so size `limit` to what is wanted (the tool's max for the whole dataset). Use 'download' when the user wants a file or when you need many rows for analysis (fetch the link in your execution environment instead of paging through the conversation).

Options:autoinlinedownload
Default: auto
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Get Seller Feedback

get_seller_feedback
Full Description

Helium 10 Alerts — Brand or seller feedback rating and recent negative reviews, for reputation monitoring and competitor assessment. seller_id may be the caller's own seller or a competitor's. For an account-level rollup that also surfaces feedback notifications alongside other alert types, see get_change_rollup.

Parameters (2 required, 3 optional)
Required
marketplacestring

Marketplace code: US, UK, DE, JP, etc.

Options:USCAMXDEESITFRUKINNLAUJPAEBRSA
seller_idstring

Target seller ID; can be the caller's own seller or a competitor's.

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

time_windowstring

Feedback lookback window. Defaults to 90d.

Options:30d90d365dlifetime
Default: 90d

Get Size Tier Suggestions

get_size_tier_suggestions
Full Description

Helium 10 Alerts — FBA (Fulfilled by Amazon) Size Tier optimization suggestions for a brand's monitored ASINs: which products could drop to a cheaper Size Tier by adjusting packaging dimensions, and the estimated FBA fee savings. Omit asin for all monitored products in the marketplace; pass asin for a single product. Returns an empty suggestions list when no optimization applies. For a one-off historical event of when this suggestion appeared, see search_alert_events (alert type SIZE_TIER_OPTIMISATION).

Parameters (2 required, 3 optional)
Required
marketplacestring

Marketplace code: US, UK, DE, JP, etc.

Options:USCAMXDEESITFRUKINNLAUJPAEBRSA
seller_idstring

Helium 10 seller identifier.

Optional
asinstring

Optional Amazon ASIN, 10-char alphanumeric (e.g. B01LR5S6HK). Omit for all monitored products.

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

TikTok Product Influencers

get_tiktok_product_influencers
Full Description

Helium 10 TikTok Product Influencers. Given a product_id from search_tiktok_products, returns the TikTok creators who have promoted or sold that specific product ("Collaborating Influencers"), with the GMV/units-sold/video count each creator generated for that product over a selected time window. Not a general influencer search — use search_tiktok_influencers for that. limit accepts 10-100 rows per call (default 10). At most 500 rows are reachable in total for one query; beyond that the result is truncated (truncation_reason='traversal_bound'). If data.pagination.has_more is true the result is incomplete: call again with cursor = data.pagination.next_cursor, but prefer narrowing filters over paginating through everything. Cursors expire 30 minutes after being issued and are bound to the query that issued them.

Parameters (1 required, 7 optional)
Required
product_idstring

The TikTok Shop product to look up collaborating influencers for, taken from a search_tiktok_products result's id.

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

cursorstring

Opaque pagination cursor from a previous response's pagination.next_cursor. Omit for the first page. Pass it back verbatim with the same query arguments (limit may change between pages); never construct or edit it. Cursors are reusable but expire 30 minutes after being issued (pagination.cursor_expires_at) and are bound to the query that issued them.

Default: null
last_few_daysinteger

Time window in days used to calculate the metrics.

Options:71430
Default: 7
limitinteger

Number of rows to return, 10-100 (default 10); out-of-range values are rejected. At most 500 rows are reachable in total for one query. When pagination.has_more is true, fetch the next batch with `cursor`. Do NOT probe with a small limit to learn the dataset size — every page carries the same total_count/has_more metadata, so ask for the rows you actually need and read the metadata of that response.

Default: 10
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

sort_ascboolean

Sort ascending instead of the default descending order.

Default: False
sort_bystring

Field to sort the results by.

Options:gmvitemsSold
Default: itemsSold

Top Keywords for Listing

get_top_keywords
Full Description

Helium 10 Top Keywords for Listing. For an ASIN group, returns keyword data in two layers — an aggregate summary and a per-keyword detail table (search volume, keyword sales, CPR, organic rank, per-ASIN ranks) — plus a side-by-side view of which keywords competitors rank for that you don't. Summary is always returned. Field names differ by mode: single ASIN mode (no competitors) returns total_keywords, top10_keywords, total_search_volume, top10_search_volume; multi ASIN mode (with competitors) returns total_shared_keywords, shared_top10_keywords, total_shared_search_volume, shared_top10_search_volume. The response includes a mode field ("single" or "multi") so the caller knows which field set to expect. Keyword details are conditionally returned. In multi-ASIN mode, a keyword qualifies when: at least 2 ASINs share it, average competitor rank is between 1–40, at least 4 ranking competitors, and search volume > 500. In single-ASIN mode, a keyword qualifies when: word count ≥ 2, search volume > 500, and organic rank ≤ 10. When no keywords qualify, keyword_details returns an empty array [] and no_ranking_keywords is set to true. Use to see which keywords drive the most traffic, find coverage gaps versus competitors. Organic ranking signals only — paid keyword data is out of scope. Not for: general attribute comparison (use compare_listings); LQS or sales data (use get_listing_score).

Parameters (0 required, 6 optional)
Optional
asinstring

Alias for ``main_asin`` (accepted because callers often send ``asin``). Prefer ``main_asin``; when both are supplied ``main_asin`` wins. Leave unset if you already pass ``main_asin``.

Default: null
competitor_asinsarray

Optional list of up to 10 competitor ASINs (each 10 characters). When non-empty the response switches to multi mode: per-phrase rows gain shared-rank metrics and the aggregates move to summary_multi (Shared* variants). When omitted or empty the call runs in single mode.

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

main_asinstring

Main Amazon ASIN whose keyword set anchors the response (10 characters). Required — the parameter is named ``main_asin`` (not ``asin``); you may also pass it via the ``asin`` alias.

Default: null
marketplacestring

Optional marketplace short code where the ASIN is listed. Supported: US, CA, MX, DE, ES, IT, FR, UK, IN, NL, AE, BR, AU. Defaults to US when omitted. Case-insensitive; whitespace is trimmed.

Default: US
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Get Walmart Account Profit And Loss Breakdown

get_wmt_account_profit_and_loss_breakdown
Full Description

Return a WALMART account-level P&L snapshot with nested component metrics ONLY for the requested breakdown_metrics. Not a time series, not product rows. Walmart only. Use for drill-down: Walmart fee lines (walmart_fees → Commission), gross_revenue parts (Sales / Shipping / Taxes → Tax Collected + Tax Withheld), COGS parts (Product Cost / Shipping Cost / Tariffs), and named indirect costs (dynamic configured cost names). Pass only the needed keys from: cost_of_goods | indirect_cost | gross_revenue | walmart_fees — any other key is INVALID_INPUT. Prefer get_wmt_account_profit_and_loss_summary first for Level 1 totals. NOT for: Level 1 only (summary); component trends over time (get_wmt_account_profit_and_loss_breakdown_series); per-product drill-down (get_wmt_product_profit_and_loss_breakdown); Amazon P&L (unprefixed Amazon tools). seller_ids are Walmart partner_id values; marketplace / date_tz / currency are bound — today only US + America/Los_Angeles + USD. item_ids / skus only narrow the account roll-up. cost_of_goods / indirect_cost 0 may mean unconfigured. Do not mix with Amazon P&L.

Parameters (3 required, 8 optional)
Required
breakdown_metricsarray

Required, non-empty. Which Level 1 parents to expand into component trees; pass only the keys you need. Allowed (Epic HP-1781 §D): cost_of_goods (Product Cost / Shipping Cost / Tariffs), indirect_cost (dynamic configured cost names), gross_revenue (Sales / Shipping / Taxes → Tax Collected + Tax Withheld), walmart_fees (Commission). Any other key → INVALID_INPUT.

current_date_fromstring

Inclusive start calendar date in date_tz, YYYY-MM-DD only (no time). Required. Use the exact parameter name current_date_from; do not use start_date, date_from, or from_date. Must be <= current_date_to.

current_date_tostring

Inclusive end calendar date in date_tz, YYYY-MM-DD only (no time). Required. Use the exact parameter name current_date_to; do not use end_date, date_to, or to_date. Must be >= current_date_from. A value after today in date_tz is silently clamped to today in date_tz (the future has no data).

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

currencystring

ISO 4217 code for amounts. Bound to the Walmart marketplace; today only USD (US). Optional, defaults to USD.

Options:USD
Default: USD
date_tzstring

Timezone used to interpret calendar dates. Bound to the Walmart marketplace (not any IANA timezone): today only America/Los_Angeles (US). Optional; defaults to America/Los_Angeles.

Options:America/Los_Angeles
Default: null
item_idsarray

Optional. Exact IN filter by Walmart item_id list (array of strings). Narrows the account roll-up only — the response stays a single metrics map, never product rows. Default null (all items).

Default: null
marketplacearray

Optional Walmart marketplace filter as an array of country short codes. Only US is enabled today (CA / MX reserved); default null = all authorised Walmart marketplaces.

Default: null
seller_idsarray

Optional. Filter on Walmart seller accounts (array of partner_id strings). Intersected with the sellers authorised on the Pacvue token; no intersection → empty metrics object. Default null (all authorised Walmart sellers).

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

skusarray

Optional. Exact IN filter by seller SKU list (array of strings). Narrows the account roll-up only — the response stays a single metrics map, never product rows. Default null (all SKUs).

Default: null

Get Walmart Account Profit And Loss Breakdown Series

get_wmt_account_profit_and_loss_breakdown_series
Full Description

Return WALMART account-level P&L breakdown component trees for the requested breakdown_metrics, bucketed by granularity (day / week / month) — every node carries a date-keyed values map alongside its range total. Not product-level. Walmart only. Use for trends of fee / revenue / COGS / indirect components over time (e.g. weekly Commission, monthly Tax Withheld, named indirect costs per month). Requires granularity AND a non-empty breakdown_metrics from: cost_of_goods | indirect_cost | gross_revenue | walmart_fees — any other key is INVALID_INPUT. Prefer simpler tools first: snapshot component totals → get_wmt_account_profit_and_loss_breakdown; Level 1 trends → get_wmt_account_profit_and_loss_summary_series; product trends → get_wmt_product_profit_and_loss_breakdown_series; Amazon P&L → unprefixed Amazon tools. Do not pass scope or offset — responses carry neither, use the request granularity you sent. seller_ids are Walmart partner_id values; marketplace / date_tz / currency are bound — today only US + America/Los_Angeles + USD. item_ids / skus only narrow the account roll-up. cost_of_goods / indirect_cost 0 may mean unconfigured. Do not mix with Amazon P&L.

Parameters (4 required, 8 optional)
Required
breakdown_metricsarray

Required, non-empty. Which Level 1 parents to expand into component trees; pass only the keys you need. Allowed (Epic HP-1781 §D): cost_of_goods (Product Cost / Shipping Cost / Tariffs), indirect_cost (dynamic configured cost names), gross_revenue (Sales / Shipping / Taxes → Tax Collected + Tax Withheld), walmart_fees (Commission). Any other key → INVALID_INPUT.

current_date_fromstring

Inclusive start calendar date in date_tz, YYYY-MM-DD only (no time). Required. Use the exact parameter name current_date_from; do not use start_date, date_from, or from_date. Must be <= current_date_to.

current_date_tostring

Inclusive end calendar date in date_tz, YYYY-MM-DD only (no time). Required. Use the exact parameter name current_date_to; do not use end_date, date_to, or to_date. Must be >= current_date_from. A value after today in date_tz is silently clamped to today in date_tz (the future has no data).

granularitystring

Time-bucket size for series tools: day | week | month. Required. Use the exact parameter name granularity; do not use scope, interval, period, or bucket as input aliases. Week/month align to calendar boundaries (week starts Monday; month starts on the 1st); first/last buckets may be partial. The first bucket key may precede current_date_from (e.g. from 2026-07-01 at week granularity → first key 2026-06-29). Partial buckets include only data inside the requested date range. Series responses carry no scope or offset fields; use the request granularity you sent.

Options:dayweekmonth
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

currencystring

ISO 4217 code for amounts. Bound to the Walmart marketplace; today only USD (US). Optional, defaults to USD.

Options:USD
Default: USD
date_tzstring

Timezone used to interpret calendar dates. Bound to the Walmart marketplace (not any IANA timezone): today only America/Los_Angeles (US). Optional; defaults to America/Los_Angeles.

Options:America/Los_Angeles
Default: null
item_idsarray

Optional. Exact IN filter by Walmart item_id list (array of strings). Narrows the account roll-up only — the response stays a single metrics map, never product rows. Default null (all items).

Default: null
marketplacearray

Optional Walmart marketplace filter as an array of country short codes. Only US is enabled today (CA / MX reserved); default null = all authorised Walmart marketplaces.

Default: null
seller_idsarray

Optional. Filter on Walmart seller accounts (array of partner_id strings). Intersected with the sellers authorised on the Pacvue token; no intersection → empty metrics object. Default null (all authorised Walmart sellers).

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

skusarray

Optional. Exact IN filter by seller SKU list (array of strings). Narrows the account roll-up only — the response stays a single metrics map, never product rows. Default null (all SKUs).

Default: null

Get Walmart Account Profit And Loss Summary

get_wmt_account_profit_and_loss_summary
Full Description

Return WALMART account-level P&L summary for a time range: all Level 1 metrics as one snapshot map (sales, units_sold, refund, advertising_cost, cost_of_goods, indirect_cost, estimated_payout, gross_revenue, gross_profit, walmart_fees, expenses, net_profit, margin, roi, refunds_percentage). No child breakdowns, not a time series, not product rows. Walmart only. Use for overall / store-level Walmart Level 1 KPIs for a period without item/SKU rows or trend buckets; prefer this summary first. NOT for: Amazon P&L (use the unprefixed get_account_profit_and_loss_* / get_product_* tools); per-item or SKU figures (get_wmt_product_profit_and_loss_summary); trends (get_wmt_account_profit_and_loss_summary_series); line-item drill-down (get_wmt_account_profit_and_loss_breakdown); ACOS / TACoS / ads sales (Ads MCP — this tool only carries advertising_cost as negative spend); COGS / indirect-cost configuration CRUD. seller_ids are Walmart partner_id values; omit to include all token-authorised Walmart sellers. marketplace / date_tz / currency are bound together — today only US + America/Los_Angeles + USD. item_ids / skus only narrow the account roll-up (still a single metrics map). If cost_of_goods is 0 it may simply be unconfigured — say so, as net_profit / roi may be overstated. Do not invent tacos, ads_acos, or sessions for Walmart, and do not mix these numbers with Amazon P&L.

Parameters (2 required, 8 optional)
Required
current_date_fromstring

Inclusive start calendar date in date_tz, YYYY-MM-DD only (no time). Required. Use the exact parameter name current_date_from; do not use start_date, date_from, or from_date. Must be <= current_date_to.

current_date_tostring

Inclusive end calendar date in date_tz, YYYY-MM-DD only (no time). Required. Use the exact parameter name current_date_to; do not use end_date, date_to, or to_date. Must be >= current_date_from. A value after today in date_tz is silently clamped to today in date_tz (the future has no data).

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

currencystring

ISO 4217 code for amounts. Bound to the Walmart marketplace; today only USD (US). Optional, defaults to USD.

Options:USD
Default: USD
date_tzstring

Timezone used to interpret calendar dates. Bound to the Walmart marketplace (not any IANA timezone): today only America/Los_Angeles (US). Optional; defaults to America/Los_Angeles.

Options:America/Los_Angeles
Default: null
item_idsarray

Optional. Exact IN filter by Walmart item_id list (array of strings). Narrows the account roll-up only — the response stays a single metrics map, never product rows. Default null (all items).

Default: null
marketplacearray

Optional Walmart marketplace filter as an array of country short codes. Only US is enabled today (CA / MX reserved); default null = all authorised Walmart marketplaces.

Default: null
seller_idsarray

Optional. Filter on Walmart seller accounts (array of partner_id strings). Intersected with the sellers authorised on the Pacvue token; no intersection → empty metrics object. Default null (all authorised Walmart sellers).

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

skusarray

Optional. Exact IN filter by seller SKU list (array of strings). Narrows the account roll-up only — the response stays a single metrics map, never product rows. Default null (all SKUs).

Default: null

Get Walmart Account Profit And Loss Summary Series

get_wmt_account_profit_and_loss_summary_series
Full Description

Return WALMART account-level Level 1 P&L as a time series bucketed by granularity (day / week / month) — one (metric_key, values) series per Level 1 metric; no child breakdowns, not product rows. Walmart only. Use for trends / over-time comparison of store-level KPIs (daily sales, weekly net profit, monthly walmart_fees, …); prefer the non-series get_wmt_account_profit_and_loss_summary unless a trend is explicitly needed. NOT for: snapshot totals (get_wmt_account_profit_and_loss_summary); product trends (get_wmt_product_profit_and_loss_summary_series); breakdown component trends (get_wmt_account_profit_and_loss_breakdown_series); Amazon P&L (unprefixed Amazon tools); ACOS / ads sales (Ads MCP). Requires granularity; do not pass scope or offset — series carry neither, use the request granularity you sent. seller_ids are Walmart partner_id values; marketplace / date_tz / currency are bound together — today only US + America/Los_Angeles + USD. item_ids / skus only narrow the account roll-up. cost_of_goods / indirect_cost 0 may mean unconfigured. Do not invent tacos, ads_acos, or sessions for Walmart, and do not mix these numbers with Amazon P&L.

Parameters (3 required, 8 optional)
Required
current_date_fromstring

Inclusive start calendar date in date_tz, YYYY-MM-DD only (no time). Required. Use the exact parameter name current_date_from; do not use start_date, date_from, or from_date. Must be <= current_date_to.

current_date_tostring

Inclusive end calendar date in date_tz, YYYY-MM-DD only (no time). Required. Use the exact parameter name current_date_to; do not use end_date, date_to, or to_date. Must be >= current_date_from. A value after today in date_tz is silently clamped to today in date_tz (the future has no data).

granularitystring

Time-bucket size for series tools: day | week | month. Required. Use the exact parameter name granularity; do not use scope, interval, period, or bucket as input aliases. Week/month align to calendar boundaries (week starts Monday; month starts on the 1st); first/last buckets may be partial. The first bucket key may precede current_date_from (e.g. from 2026-07-01 at week granularity → first key 2026-06-29). Partial buckets include only data inside the requested date range. Series responses carry no scope or offset fields; use the request granularity you sent.

Options:dayweekmonth
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

currencystring

ISO 4217 code for amounts. Bound to the Walmart marketplace; today only USD (US). Optional, defaults to USD.

Options:USD
Default: USD
date_tzstring

Timezone used to interpret calendar dates. Bound to the Walmart marketplace (not any IANA timezone): today only America/Los_Angeles (US). Optional; defaults to America/Los_Angeles.

Options:America/Los_Angeles
Default: null
item_idsarray

Optional. Exact IN filter by Walmart item_id list (array of strings). Narrows the account roll-up only — the response stays a single metrics map, never product rows. Default null (all items).

Default: null
marketplacearray

Optional Walmart marketplace filter as an array of country short codes. Only US is enabled today (CA / MX reserved); default null = all authorised Walmart marketplaces.

Default: null
seller_idsarray

Optional. Filter on Walmart seller accounts (array of partner_id strings). Intersected with the sellers authorised on the Pacvue token; no intersection → empty metrics object. Default null (all authorised Walmart sellers).

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

skusarray

Optional. Exact IN filter by seller SKU list (array of strings). Narrows the account roll-up only — the response stays a single metrics map, never product rows. Default null (all SKUs).

Default: null

Get Walmart Inventory Values

get_wmt_inventory_values
Full Description

Return CURRENT WALMART inventory quantity metrics per product row. Each row includes product identity (item_id, sku, product_name, brand, image_url, seller_id, marketplace, fulfillment_type) plus FLAT WFS and SF quantity fields on the same row: wfs_available, wfs_reserved, wfs_on_hand, wfs_inbound, wfs_unavailable, sf_available, sf_on_hand. A Walmart SKU can hold BOTH WFS and SF stock at once (unlike Amazon FBA/FBM, which are separate SKUs/rows). Not a time series; NOT days of supply or inventory age — Walmart has no equivalent health API, so there is no Walmart counterpart to get_fba_inventory_health_status.

When to use: user asks how much Walmart stock is sellable, reserved, on hand, inbound to WFS, or unavailable; needs SKU / item_id-level inventory counts across sellers; restock or fulfillment planning from quantity snapshots; wants to filter or sort by any of the seven quantity fields (e.g. low wfs_available, high wfs_inbound).

When NOT to use: Amazon inventory quantities (get_inventory_values); Amazon FBA days of supply / inventory age (get_fba_inventory_health_status — no Walmart counterpart); Walmart units-sold trends over time (get_wmt_sales_velocity); Walmart profit & loss or fees (the Walmart P&L tools); discovering which Walmart sellers are linked (get_my_wmt_seller_accounts).

Guidance: prefer the narrowest filters (seller_ids, marketplace, item_ids, skus, fulfillment_type) plus *_min / *_max bounds and sort_by to keep responses small, and page through large catalogs. fulfillment_type selects products whose LISTING ATTRIBUTE matches — matching rows may still show non-zero quantities on the other channel (e.g. fulfillment_type=['WFS'] can return rows with sf_available > 0). Do not invent seller_id / item_id / sku values — call get_my_wmt_seller_accounts first for valid seller ids. Do not mix these numbers with Amazon inventory tools. Rows carry item_id, never a backend asin.

Parameters (0 required, 25 optional)
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

fulfillment_typearray

Optional. Filter by the product's listing attribute: WFS (Walmart Fulfillment Services) | WFSE (WFS Eligible) | SF (Seller Fulfilled). Multi-select ORs within the array; omit / null = all three. NOTE: this matches the product's fulfillment attribute — filtered rows may STILL show non-zero quantities on the other channel (e.g. fulfillment_type=['WFS'] can return rows with sf_available > 0), because one Walmart SKU can hold WFS and SF stock at the same time.

Default: null
item_idsarray

Optional. Exact IN filter by Walmart item_id list (array of strings). Restricts which product rows are returned; the response is still one row per product. Default null (all items).

Default: null
marketplacearray

Optional Walmart marketplace filter as an array of country short codes. Only US is enabled today (CA / MX reserved); default null = all authorised Walmart marketplaces.

Default: null
page_indexinteger

Optional. 1-based page number. Default 1.

Default: null
page_sizeinteger

Optional. Rows per page, 5..1000. Default 50.

Default: null
seller_idsarray

Optional. Filter on Walmart seller accounts (array of partner_id strings). Intersected with the sellers authorised on the Pacvue token; no intersection → empty metrics object. Default null (all authorised Walmart sellers).

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

sf_available_maxinteger

Optional inclusive maximum bound on sf_available (non-negative integer). Set only sf_available_min for >= min, only sf_available_max for <= max, or both for a closed range; sf_available_min must be <= sf_available_max. Range filters on different metrics are ANDed.

Default: null
sf_available_mininteger

Optional inclusive minimum bound on sf_available (non-negative integer). Set only sf_available_min for >= min, only sf_available_max for <= max, or both for a closed range; sf_available_min must be <= sf_available_max. Range filters on different metrics are ANDed.

Default: null
sf_on_hand_maxinteger

Optional inclusive maximum bound on sf_on_hand (non-negative integer). Set only sf_on_hand_min for >= min, only sf_on_hand_max for <= max, or both for a closed range; sf_on_hand_min must be <= sf_on_hand_max. Range filters on different metrics are ANDed.

Default: null
sf_on_hand_mininteger

Optional inclusive minimum bound on sf_on_hand (non-negative integer). Set only sf_on_hand_min for >= min, only sf_on_hand_max for <= max, or both for a closed range; sf_on_hand_min must be <= sf_on_hand_max. Range filters on different metrics are ANDed.

Default: null
skusarray

Optional. Exact IN filter by seller SKU list (array of strings). Restricts which product rows are returned; the response is still one row per product. Default null (all SKUs).

Default: null
sort_bystring

Optional. Sort rows by one of the seven quantity metrics. Omit = server default order. Combine with a small page_size to get top/bottom N SKUs in one call (e.g. sort_by=wfs_available + sort_order=asc surfaces lowest-stock SKUs first for restock triage).

Options:wfs_availablewfs_reservedwfs_on_handwfs_inboundwfs_unavailablesf_availablesf_on_hand
Default: null
sort_orderstring

Optional. Sort direction for sort_by. 'desc' = highest value first (default); 'asc' = lowest value first. Ignored if sort_by is not provided.

Options:ascdesc
Default: null
wfs_available_maxinteger

Optional inclusive maximum bound on wfs_available (non-negative integer). Set only wfs_available_min for >= min, only wfs_available_max for <= max, or both for a closed range; wfs_available_min must be <= wfs_available_max. Range filters on different metrics are ANDed.

Default: null
wfs_available_mininteger

Optional inclusive minimum bound on wfs_available (non-negative integer). Set only wfs_available_min for >= min, only wfs_available_max for <= max, or both for a closed range; wfs_available_min must be <= wfs_available_max. Range filters on different metrics are ANDed.

Default: null
wfs_inbound_maxinteger

Optional inclusive maximum bound on wfs_inbound (non-negative integer). Set only wfs_inbound_min for >= min, only wfs_inbound_max for <= max, or both for a closed range; wfs_inbound_min must be <= wfs_inbound_max. Range filters on different metrics are ANDed.

Default: null
wfs_inbound_mininteger

Optional inclusive minimum bound on wfs_inbound (non-negative integer). Set only wfs_inbound_min for >= min, only wfs_inbound_max for <= max, or both for a closed range; wfs_inbound_min must be <= wfs_inbound_max. Range filters on different metrics are ANDed.

Default: null
wfs_on_hand_maxinteger

Optional inclusive maximum bound on wfs_on_hand (non-negative integer). Set only wfs_on_hand_min for >= min, only wfs_on_hand_max for <= max, or both for a closed range; wfs_on_hand_min must be <= wfs_on_hand_max. Range filters on different metrics are ANDed.

Default: null
wfs_on_hand_mininteger

Optional inclusive minimum bound on wfs_on_hand (non-negative integer). Set only wfs_on_hand_min for >= min, only wfs_on_hand_max for <= max, or both for a closed range; wfs_on_hand_min must be <= wfs_on_hand_max. Range filters on different metrics are ANDed.

Default: null
wfs_reserved_maxinteger

Optional inclusive maximum bound on wfs_reserved (non-negative integer). Set only wfs_reserved_min for >= min, only wfs_reserved_max for <= max, or both for a closed range; wfs_reserved_min must be <= wfs_reserved_max. Range filters on different metrics are ANDed.

Default: null
wfs_reserved_mininteger

Optional inclusive minimum bound on wfs_reserved (non-negative integer). Set only wfs_reserved_min for >= min, only wfs_reserved_max for <= max, or both for a closed range; wfs_reserved_min must be <= wfs_reserved_max. Range filters on different metrics are ANDed.

Default: null
wfs_unavailable_maxinteger

Optional inclusive maximum bound on wfs_unavailable (non-negative integer). Set only wfs_unavailable_min for >= min, only wfs_unavailable_max for <= max, or both for a closed range; wfs_unavailable_min must be <= wfs_unavailable_max. Range filters on different metrics are ANDed.

Default: null
wfs_unavailable_mininteger

Optional inclusive minimum bound on wfs_unavailable (non-negative integer). Set only wfs_unavailable_min for >= min, only wfs_unavailable_max for <= max, or both for a closed range; wfs_unavailable_min must be <= wfs_unavailable_max. Range filters on different metrics are ANDed.

Default: null

Get Walmart Product Profit And Loss Breakdown

get_wmt_product_profit_and_loss_breakdown
Full Description

Return WALMART product-level P&L snapshot rows with nested component metrics ONLY for the requested breakdown_metrics: each row carries full product identity (item_id, sku, product_name, brand, image_url, seller_id, marketplace, fulfillment_type) plus a metrics map of recursive {name, value, metrics?} trees. Not a time series. Walmart only. Use for per-SKU / per-item_id drill-down: fee lines (walmart_fees → Commission), gross_revenue parts (Sales / Shipping / Taxes), COGS parts (Product Cost / Shipping Cost / Tariffs), named indirect costs (sku-level amortisations only — account/seller-level indirect costs cannot be attributed to a product). Requires non-empty breakdown_metrics from: cost_of_goods | indirect_cost | gross_revenue | walmart_fees — any other key is INVALID_INPUT. Prefer get_wmt_product_profit_and_loss_summary first; limit metrics and page_size. NOT for: product Level 1 only (product summary); account-level drill-down (get_wmt_account_profit_and_loss_breakdown); component trends over time (get_wmt_product_profit_and_loss_breakdown_series); Amazon P&L (unprefixed Amazon tools). seller_ids are Walmart partner_id values; marketplace / date_tz / currency are bound — today only US + America/Los_Angeles + USD. Output rows carry item_id, never a backend asin. cost_of_goods / indirect_cost 0 may mean unconfigured. Do not mix with Amazon P&L.

Parameters (3 required, 13 optional)
Required
breakdown_metricsarray

Required, non-empty. Which Level 1 parents to expand into component trees; pass only the keys you need. Allowed (Epic HP-1781 §D): cost_of_goods (Product Cost / Shipping Cost / Tariffs), indirect_cost (dynamic configured cost names), gross_revenue (Sales / Shipping / Taxes → Tax Collected + Tax Withheld), walmart_fees (Commission). Any other key → INVALID_INPUT.

current_date_fromstring

Inclusive start calendar date in date_tz, YYYY-MM-DD only (no time). Required. Use the exact parameter name current_date_from; do not use start_date, date_from, or from_date. Must be <= current_date_to.

current_date_tostring

Inclusive end calendar date in date_tz, YYYY-MM-DD only (no time). Required. Use the exact parameter name current_date_to; do not use end_date, date_to, or to_date. Must be >= current_date_from. A value after today in date_tz is silently clamped to today in date_tz (the future has no data).

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

currencystring

ISO 4217 code for amounts. Bound to the Walmart marketplace; today only USD (US). Optional, defaults to USD.

Options:USD
Default: USD
date_tzstring

Timezone used to interpret calendar dates. Bound to the Walmart marketplace (not any IANA timezone): today only America/Los_Angeles (US). Optional; defaults to America/Los_Angeles.

Options:America/Los_Angeles
Default: null
item_idsarray

Optional. Exact IN filter by Walmart item_id list (array of strings). Restricts which product rows are returned; the response is still one row per product. Default null (all items).

Default: null
marketplacearray

Optional Walmart marketplace filter as an array of country short codes. Only US is enabled today (CA / MX reserved); default null = all authorised Walmart marketplaces.

Default: null
page_indexinteger

Optional. 1-based page number. Default 1.

Default: null
page_sizeinteger

Optional. Rows per page, 1..100. Default 50.

Default: null
product_levelstring

Row aggregation for product tools: sku (default) | item_id. One item_id may map to multiple SKUs. Walmart has no asin/parent_asin levels.

Options:skuitem_id
Default: sku
seller_idsarray

Optional. Filter on Walmart seller accounts (array of partner_id strings). Intersected with the sellers authorised on the Pacvue token; no intersection → empty metrics object. Default null (all authorised Walmart sellers).

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

skusarray

Optional. Exact IN filter by seller SKU list (array of strings). Restricts which product rows are returned; the response is still one row per product. Default null (all SKUs).

Default: null
sort_bystring

Optional. Sort rows by any Walmart Level 1 metric key (Epic HP-1781 §C). Cost-type metrics (refund, advertising_cost, cost_of_goods, indirect_cost, walmart_fees, expenses) are returned as negative values and are ordered by ABSOLUTE amount, not signed value: sort_order=desc lists the highest spend/cost first and asc the lowest — same rule as the Amazon P&L tools. net_profit, margin and roi can also be negative but are NOT cost metrics: they keep signed ordering, so desc lists the most profitable first and losses last. Omit = backend default order.

Options:salesunits_soldrefundadvertising_costcost_of_goodsindirect_costestimated_payoutgross_revenuegross_profitwalmart_feesexpensesnet_profitmarginroirefunds_percentage
Default: null
sort_orderstring

Optional. Sort direction for sort_by. 'desc' = highest value first (default); 'asc' = lowest value first. Ignored if sort_by is not provided.

Options:ascdesc
Default: null

Get Walmart Product Profit And Loss Breakdown Series

get_wmt_product_profit_and_loss_breakdown_series
Full Description

Return WALMART product-level P&L breakdown component trees over time: each row carries full product identity (item_id, sku, product_name, brand, image_url, seller_id, marketplace, fulfillment_type) plus a metrics map for the requested breakdown_metrics where every node has a date-keyed values map ({name, value, values, metrics?}), bucketed by granularity (day / week / month). This is the HIGHEST TOKEN COST tool in the Walmart P&L set — request minimal breakdown_metrics, narrow with item_ids/skus, and use a small page_size. Walmart only. Use for per-product trends of breakdown components (e.g. weekly Commission by SKU, monthly named indirect costs per item). Requires granularity AND non-empty breakdown_metrics from: cost_of_goods | indirect_cost | gross_revenue | walmart_fees — any other key is INVALID_INPUT. NOT for: snapshot component totals (get_wmt_product_profit_and_loss_breakdown); Level 1 product trends (get_wmt_product_profit_and_loss_summary_series); account-level component trends (get_wmt_account_profit_and_loss_breakdown_series); Amazon P&L (unprefixed Amazon tools). Do not pass scope or offset — responses carry neither, use the request granularity you sent. seller_ids are Walmart partner_id values; marketplace / date_tz / currency are bound — today only US + America/Los_Angeles + USD. Output rows carry item_id, never a backend asin; indirect_cost children are sku-level amortisations only. cost_of_goods / indirect_cost 0 may mean unconfigured. Do not mix with Amazon P&L.

Parameters (4 required, 13 optional)
Required
breakdown_metricsarray

Required, non-empty. Which Level 1 parents to expand into component trees; pass only the keys you need. Allowed (Epic HP-1781 §D): cost_of_goods (Product Cost / Shipping Cost / Tariffs), indirect_cost (dynamic configured cost names), gross_revenue (Sales / Shipping / Taxes → Tax Collected + Tax Withheld), walmart_fees (Commission). Any other key → INVALID_INPUT.

current_date_fromstring

Inclusive start calendar date in date_tz, YYYY-MM-DD only (no time). Required. Use the exact parameter name current_date_from; do not use start_date, date_from, or from_date. Must be <= current_date_to.

current_date_tostring

Inclusive end calendar date in date_tz, YYYY-MM-DD only (no time). Required. Use the exact parameter name current_date_to; do not use end_date, date_to, or to_date. Must be >= current_date_from. A value after today in date_tz is silently clamped to today in date_tz (the future has no data).

granularitystring

Time-bucket size for series tools: day | week | month. Required. Use the exact parameter name granularity; do not use scope, interval, period, or bucket as input aliases. Week/month align to calendar boundaries (week starts Monday; month starts on the 1st); first/last buckets may be partial. The first bucket key may precede current_date_from (e.g. from 2026-07-01 at week granularity → first key 2026-06-29). Partial buckets include only data inside the requested date range. Series responses carry no scope or offset fields; use the request granularity you sent.

Options:dayweekmonth
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

currencystring

ISO 4217 code for amounts. Bound to the Walmart marketplace; today only USD (US). Optional, defaults to USD.

Options:USD
Default: USD
date_tzstring

Timezone used to interpret calendar dates. Bound to the Walmart marketplace (not any IANA timezone): today only America/Los_Angeles (US). Optional; defaults to America/Los_Angeles.

Options:America/Los_Angeles
Default: null
item_idsarray

Optional. Exact IN filter by Walmart item_id list (array of strings). Restricts which product rows are returned; the response is still one row per product. Default null (all items).

Default: null
marketplacearray

Optional Walmart marketplace filter as an array of country short codes. Only US is enabled today (CA / MX reserved); default null = all authorised Walmart marketplaces.

Default: null
page_indexinteger

Optional. 1-based page number. Default 1.

Default: null
page_sizeinteger

Optional. Rows per page, 1..100. Default 50.

Default: null
product_levelstring

Row aggregation for product tools: sku (default) | item_id. One item_id may map to multiple SKUs. Walmart has no asin/parent_asin levels.

Options:skuitem_id
Default: sku
seller_idsarray

Optional. Filter on Walmart seller accounts (array of partner_id strings). Intersected with the sellers authorised on the Pacvue token; no intersection → empty metrics object. Default null (all authorised Walmart sellers).

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

skusarray

Optional. Exact IN filter by seller SKU list (array of strings). Restricts which product rows are returned; the response is still one row per product. Default null (all SKUs).

Default: null
sort_bystring

Optional. Sort rows by any Walmart Level 1 metric key (Epic HP-1781 §C). Cost-type metrics (refund, advertising_cost, cost_of_goods, indirect_cost, walmart_fees, expenses) are returned as negative values and are ordered by ABSOLUTE amount, not signed value: sort_order=desc lists the highest spend/cost first and asc the lowest — same rule as the Amazon P&L tools. net_profit, margin and roi can also be negative but are NOT cost metrics: they keep signed ordering, so desc lists the most profitable first and losses last. Omit = backend default order.

Options:salesunits_soldrefundadvertising_costcost_of_goodsindirect_costestimated_payoutgross_revenuegross_profitwalmart_feesexpensesnet_profitmarginroirefunds_percentage
Default: null
sort_orderstring

Optional. Sort direction for sort_by. 'desc' = highest value first (default); 'asc' = lowest value first. Ignored if sort_by is not provided.

Options:ascdesc
Default: null

Get Walmart Product Profit And Loss Summary

get_wmt_product_profit_and_loss_summary
Full Description

Return WALMART product-level P&L snapshots: one row per product at product_level (sku default | item_id) with product identity (item_id, sku, product_name, brand, image_url, seller_id, marketplace, fulfillment_type) and ALL Level 1 metrics per row. No time buckets, no breakdown trees. Walmart only. Use to rank / compare / inspect per-SKU or per-item_id KPIs (e.g. top products by net_profit, SKUs with negative margin). Prefer account-level tools unless product granularity is explicitly needed. Use paging (page_index/page_size) plus sort_by (any Level 1 key) / sort_order (default desc) instead of fetching everything. NOT for: store roll-up (get_wmt_account_profit_and_loss_summary); product trends (get_wmt_product_profit_and_loss_summary_series); per-product fee drill-down (get_wmt_product_profit_and_loss_breakdown); Amazon product P&L (unprefixed Amazon tools). seller_ids are Walmart partner_id values; marketplace / date_tz / currency are bound — today only US + America/Los_Angeles + USD. Output rows carry item_id, never a backend asin. cost_of_goods / indirect_cost 0 may mean unconfigured — flag that profit may be overstated. Do not mix with Amazon P&L.

Parameters (2 required, 13 optional)
Required
current_date_fromstring

Inclusive start calendar date in date_tz, YYYY-MM-DD only (no time). Required. Use the exact parameter name current_date_from; do not use start_date, date_from, or from_date. Must be <= current_date_to.

current_date_tostring

Inclusive end calendar date in date_tz, YYYY-MM-DD only (no time). Required. Use the exact parameter name current_date_to; do not use end_date, date_to, or to_date. Must be >= current_date_from. A value after today in date_tz is silently clamped to today in date_tz (the future has no data).

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

currencystring

ISO 4217 code for amounts. Bound to the Walmart marketplace; today only USD (US). Optional, defaults to USD.

Options:USD
Default: USD
date_tzstring

Timezone used to interpret calendar dates. Bound to the Walmart marketplace (not any IANA timezone): today only America/Los_Angeles (US). Optional; defaults to America/Los_Angeles.

Options:America/Los_Angeles
Default: null
item_idsarray

Optional. Exact IN filter by Walmart item_id list (array of strings). Restricts which product rows are returned; the response is still one row per product. Default null (all items).

Default: null
marketplacearray

Optional Walmart marketplace filter as an array of country short codes. Only US is enabled today (CA / MX reserved); default null = all authorised Walmart marketplaces.

Default: null
page_indexinteger

Optional. 1-based page number. Default 1.

Default: null
page_sizeinteger

Optional. Rows per page, 1..100. Default 50.

Default: null
product_levelstring

Row aggregation for product tools: sku (default) | item_id. One item_id may map to multiple SKUs. Walmart has no asin/parent_asin levels.

Options:skuitem_id
Default: sku
seller_idsarray

Optional. Filter on Walmart seller accounts (array of partner_id strings). Intersected with the sellers authorised on the Pacvue token; no intersection → empty metrics object. Default null (all authorised Walmart sellers).

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

skusarray

Optional. Exact IN filter by seller SKU list (array of strings). Restricts which product rows are returned; the response is still one row per product. Default null (all SKUs).

Default: null
sort_bystring

Optional. Sort rows by any Walmart Level 1 metric key (Epic HP-1781 §C). Cost-type metrics (refund, advertising_cost, cost_of_goods, indirect_cost, walmart_fees, expenses) are returned as negative values and are ordered by ABSOLUTE amount, not signed value: sort_order=desc lists the highest spend/cost first and asc the lowest — same rule as the Amazon P&L tools. net_profit, margin and roi can also be negative but are NOT cost metrics: they keep signed ordering, so desc lists the most profitable first and losses last. Omit = backend default order.

Options:salesunits_soldrefundadvertising_costcost_of_goodsindirect_costestimated_payoutgross_revenuegross_profitwalmart_feesexpensesnet_profitmarginroirefunds_percentage
Default: null
sort_orderstring

Optional. Sort direction for sort_by. 'desc' = highest value first (default); 'asc' = lowest value first. Ignored if sort_by is not provided.

Options:ascdesc
Default: null

Get Walmart Product Profit And Loss Summary Series

get_wmt_product_profit_and_loss_summary_series
Full Description

Return WALMART product-level Level 1 P&L as time series per product row, bucketed by granularity (day / week / month): each row carries full product identity (item_id, sku, product_name, brand, image_url, seller_id, marketplace, fulfillment_type) plus metric_series[] with one (metric_key, values) entry per Level 1 metric. No breakdown trees. Walmart only. Use for per-SKU / per-item_id trends (weekly sales by SKU, monthly margin by item_id). Requires granularity. Narrow with item_ids/skus and a small page_size — the payload grows with products × buckets × 15 metrics. Paging/sort follow the product summary tool (sort_by = any Level 1 key, sort_order default desc, sorted on the range total). NOT for: product snapshot totals (get_wmt_product_profit_and_loss_summary); account-level trends (get_wmt_account_profit_and_loss_summary_series); product fee-component trends (get_wmt_product_profit_and_loss_breakdown_series); Amazon P&L (unprefixed Amazon tools). Do not pass scope or offset — responses carry neither, use the request granularity you sent. seller_ids are Walmart partner_id values; marketplace / date_tz / currency are bound — today only US + America/Los_Angeles + USD. Output rows carry item_id, never a backend asin. cost_of_goods / indirect_cost 0 may mean unconfigured. Do not mix with Amazon P&L.

Parameters (3 required, 13 optional)
Required
current_date_fromstring

Inclusive start calendar date in date_tz, YYYY-MM-DD only (no time). Required. Use the exact parameter name current_date_from; do not use start_date, date_from, or from_date. Must be <= current_date_to.

current_date_tostring

Inclusive end calendar date in date_tz, YYYY-MM-DD only (no time). Required. Use the exact parameter name current_date_to; do not use end_date, date_to, or to_date. Must be >= current_date_from. A value after today in date_tz is silently clamped to today in date_tz (the future has no data).

granularitystring

Time-bucket size for series tools: day | week | month. Required. Use the exact parameter name granularity; do not use scope, interval, period, or bucket as input aliases. Week/month align to calendar boundaries (week starts Monday; month starts on the 1st); first/last buckets may be partial. The first bucket key may precede current_date_from (e.g. from 2026-07-01 at week granularity → first key 2026-06-29). Partial buckets include only data inside the requested date range. Series responses carry no scope or offset fields; use the request granularity you sent.

Options:dayweekmonth
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

currencystring

ISO 4217 code for amounts. Bound to the Walmart marketplace; today only USD (US). Optional, defaults to USD.

Options:USD
Default: USD
date_tzstring

Timezone used to interpret calendar dates. Bound to the Walmart marketplace (not any IANA timezone): today only America/Los_Angeles (US). Optional; defaults to America/Los_Angeles.

Options:America/Los_Angeles
Default: null
item_idsarray

Optional. Exact IN filter by Walmart item_id list (array of strings). Restricts which product rows are returned; the response is still one row per product. Default null (all items).

Default: null
marketplacearray

Optional Walmart marketplace filter as an array of country short codes. Only US is enabled today (CA / MX reserved); default null = all authorised Walmart marketplaces.

Default: null
page_indexinteger

Optional. 1-based page number. Default 1.

Default: null
page_sizeinteger

Optional. Rows per page, 1..100. Default 50.

Default: null
product_levelstring

Row aggregation for product tools: sku (default) | item_id. One item_id may map to multiple SKUs. Walmart has no asin/parent_asin levels.

Options:skuitem_id
Default: sku
seller_idsarray

Optional. Filter on Walmart seller accounts (array of partner_id strings). Intersected with the sellers authorised on the Pacvue token; no intersection → empty metrics object. Default null (all authorised Walmart sellers).

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

skusarray

Optional. Exact IN filter by seller SKU list (array of strings). Restricts which product rows are returned; the response is still one row per product. Default null (all SKUs).

Default: null
sort_bystring

Optional. Sort rows by any Walmart Level 1 metric key (Epic HP-1781 §C). Cost-type metrics (refund, advertising_cost, cost_of_goods, indirect_cost, walmart_fees, expenses) are returned as negative values and are ordered by ABSOLUTE amount, not signed value: sort_order=desc lists the highest spend/cost first and asc the lowest — same rule as the Amazon P&L tools. net_profit, margin and roi can also be negative but are NOT cost metrics: they keep signed ordering, so desc lists the most profitable first and losses last. Omit = backend default order.

Options:salesunits_soldrefundadvertising_costcost_of_goodsindirect_costestimated_payoutgross_revenuegross_profitwalmart_feesexpensesnet_profitmarginroirefunds_percentage
Default: null
sort_orderstring

Optional. Sort direction for sort_by. 'desc' = highest value first (default); 'asc' = lowest value first. Ignored if sort_by is not provided.

Options:ascdesc
Default: null

Get Walmart Sales Velocity

get_wmt_sales_velocity
Full Description

Return WALMART units sold over time (sales velocity) per SKU row, bucketed by day / week / month over an inclusive date range. Each row carries product identity (item_id, sku, product_name, brand, image_url, seller_id, marketplace, fulfillment_type) plus a single sales_velocity.values map (bucket-start yyyy-MM-dd → units sold). Sales velocity is INDEPENDENT of inventory channels: one SKU = one sales series (e.g. SKU A sold 100 units), regardless of how that SKU's stock splits across WFS and SF — do not reconcile these unit series against the WFS/SF inventory fields, they are different domains. Not a quantity snapshot; not revenue / fees / other P&L metrics; not days of supply or inventory age (Walmart has no health tool).

When to use: user asks how Walmart units sold TREND, wants to compare periods, needs velocity by SKU / item_id, or needs time-bucketed unit counts for restock planning alongside get_wmt_inventory_values.

When NOT to use: Walmart inventory quantity snapshot (get_wmt_inventory_values); Amazon sales velocity (get_sales_velocity); full Walmart P&L trends — sales $, fees, profit — (get_wmt_product_profit_and_loss_summary_series or the account series tools); discovering linked Walmart sellers (get_my_wmt_seller_accounts).

Guidance: prefer this tool over the Walmart product P&L series when ONLY units sold matter — the payload is much smaller. Empty {} is valid: it defaults to the last 30 inclusive calendar days in date_tz with granularity=day. Provide BOTH current_date_from and current_date_to or NEITHER — supplying only one is an error. Narrow with seller_ids, marketplace, item_ids, skus, fulfillment_type, and pagination. fulfillment_type filters the product's listing attribute only; it never splits or re-attributes units by channel. There is no sort_by / sort_order and no units range filter on this tool. Rows carry item_id, never a backend asin. Bucket keys match the Walmart P&L series tools for the same inputs. Do not invent seller_id / item_id / sku values, and do not mix with Amazon velocity.

Parameters (0 required, 13 optional)
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

current_date_fromstring

Optional inclusive start day in date_tz, YYYY-MM-DD (no time). Omit BOTH endpoints to default to the most recent 30 calendar days. Providing only one of the two endpoints is an error (INVALID_INPUT).

Default: null
current_date_tostring

Optional inclusive end day in date_tz, YYYY-MM-DD (no time). Omit BOTH endpoints to default to the most recent 30 calendar days. Providing only one of the two endpoints is an error (INVALID_INPUT). A value after today in date_tz is silently clamped to today in date_tz (the future has no data).

Default: null
date_tzstring

Timezone used to interpret calendar dates. Bound to the Walmart marketplace (not any IANA timezone): today only America/Los_Angeles (US). Optional; defaults to America/Los_Angeles.

Options:America/Los_Angeles
Default: null
fulfillment_typearray

Optional. Filter by the product's listing attribute: WFS (Walmart Fulfillment Services) | WFSE (WFS Eligible) | SF (Seller Fulfilled). Multi-select ORs within the array; omit / null = all three. NOTE: this matches the product's fulfillment attribute — filtered rows may STILL show non-zero quantities on the other channel (e.g. fulfillment_type=['WFS'] can return rows with sf_available > 0), because one Walmart SKU can hold WFS and SF stock at the same time.

Default: null
granularitystring

Optional time-bucket size: day | week | month. Omit to default to 'day'. Week/month align to calendar boundaries (week starts Monday; month on the 1st); first/last buckets may be partial vs the requested range. Bucket keys match the Walmart P&L series tools for the same inputs.

Options:dayweekmonth
Default: null
item_idsarray

Optional. Exact IN filter by Walmart item_id list (array of strings). Restricts which product rows are returned; the response is still one row per product. Default null (all items).

Default: null
marketplacearray

Optional Walmart marketplace filter as an array of country short codes. Only US is enabled today (CA / MX reserved); default null = all authorised Walmart marketplaces.

Default: null
page_indexinteger

Optional. 1-based page number. Default 1.

Default: null
page_sizeinteger

Optional. Rows per page, 5..1000. Default 50.

Default: null
seller_idsarray

Optional. Filter on Walmart seller accounts (array of partner_id strings). Intersected with the sellers authorised on the Pacvue token; no intersection → empty metrics object. Default null (all authorised Walmart sellers).

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

skusarray

Optional. Exact IN filter by seller SKU list (array of strings). Restricts which product rows are returned; the response is still one row per product. Default null (all SKUs).

Default: null

List Ads Rules

list_ads_rules
Full Description

Helium 10 List Ads Rules (Ads Rule, read, paginated). Lists live automation rules (source=live) or the draft box (source=draft) for this account. platform and rule_type are required -- ask the user which rule type to list and take both values from get_ads_rule_platforms (v1 supports amazon + rule_type=BID only). Optional filters: profile_id, name (fuzzy substring); paging: limit / offset. Returns {items, total, limit, offset}. Use source=draft to find a saved-but-not-committed draft to resume, and source=live to find an existing rule to edit or delete. source=live is tenant-scoped: pass profile_id, or omit it and the server auto-resolves the single accessible profile (returns a candidate list when several exist). A live rule that carries uneditable_reason (e.g. UNSUPPORTED.RULE_HAS_TACTIC, meaning it uses a Tactic) CANNOT be edited through the MCP -- it is still listed, but editing must be done on the Helium 10 Ads Rules & Automation page. Next: get_ads_rule(source, id) for full detail before editing/deleting.

Parameters (3 required, 6 optional)
Required
platformstring

Platform key from get_ads_rule_platforms. Required. v1 supports amazon only (walmart planned). Case-sensitive.

rule_typestring

Rule type from get_ads_rule_platforms. Required -- ask the user which rule type to list. v1 supports BID only. Case-sensitive.

sourcestring

Which collection to list: 'live' = committed automation rules; 'draft' = the draft box (saved, not yet committed).

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

limitinteger

Max items per page. Default 50, max 500.

Default: 50
namestring/null

Case-insensitive substring filter on the rule name.

Default: null
offsetinteger

Zero-based paging offset. Default 0.

Default: 0
profile_idstring/null

Target profile_id (from get_ads_query_materials). Optional for source=draft; for source=live it scopes the tenant -- omit it only if you want the server to auto-resolve your single accessible profile.

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

List Amazon COGS

list_amazon_cogs
Full Description

Return a paginated list of CONFIGURED Amazon COGS records. One row = one COGS configuration (not one SKU); a SKU appears on multiple rows when cogs_type=by_period (non-overlapping effective periods). Each row has cogs_id (for delete), product identity (product_name, asin, sku, brand, image_url, product_page_url, seller_id, marketplace, fulfillment_type, sku_status) and COGS fields (cogs_type, currency, product_cost, shipping_cost, tariffs, total_cogs, starts_at, ends_at). No required input. Use to view / audit / search configured unit costs, or to get cogs_id before delete_amazon_cogs. NOT for actual COGS dollars in P&L (use get_product_profit_and_loss_*; cost_of_goods=0 there may mean COGS not configured). Only SKUs WITH configured COGS are returned. Narrow with seller_ids, marketplace (short country codes US/CA/...), asins, skus, fulfillment_type (FBA|FBM), cogs_type (by_period|persistent), sku_status (active|inactive), value range filters, or effective-date endpoint filters; sort with sort_by + sort_order. Values compared as stored (no FX conversion across marketplaces).

Parameters (0 required, 25 optional)
Optional
asinsarray

Optional. SQL IN filter by ASIN list (array of strings, e.g. ['B001234567']). Default null (all ASINs).

Default: null
cogs_typestring

Filter by COGS configuration type: by_period | persistent. Omit = both types.

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

ends_at_maxstring

yyyy-MM-dd. Keep rows whose ends_at is <= this date (inclusive). Note: open-ended by_period rows (ends_at=null) and persistent rows never match any ends_at_* filter. Default: null (no bound).

Default: null
ends_at_minstring

yyyy-MM-dd. Keep rows whose ends_at is >= this date (inclusive). Note: open-ended by_period rows (ends_at=null) and persistent rows never match any ends_at_* filter. Default: null (no bound).

Default: null
fulfillment_typestring

Filter on the SKU fulfillment channel: FBA | FBM. Omit = both.

Default: null
marketplacearray

Optional marketplace filter as an array of upper-case region short codes (e.g. ['US', 'CA', 'MX']). Case-sensitive — lower-case codes are rejected. Allowed: AE, AU, BE, BR, CA, CN, DE, EG, ES, FR, IE, IN, IT, JP, MX, NL, PL, SA, SE, SG, TR, UK, US, ZA. Default null (all authorised marketplaces).

Default: null
page_indexinteger

Optional. Page number (integer), starts from 1. Default 1.

Default: null
page_sizeinteger

Optional. Rows per page (integer). Min 5, max 1000. Default 50.

Default: null
product_cost_maxnumber

Inclusive upper bound on product_cost (>= 0). Compared as stored in each row's currency — no FX conversion across marketplaces. Default: null (no bound).

Default: null
product_cost_minnumber

Inclusive lower bound on product_cost (>= 0). Compared as stored in each row's currency — no FX conversion across marketplaces. Default: null (no bound).

Default: null
seller_idsarray

Optional. SQL IN filter on seller account IDs (array of strings). Profits intersects with sellers from Pacvue token; no intersection → empty result. Default null (all authorised sellers).

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

shipping_cost_maxnumber

Inclusive upper bound on shipping_cost (>= 0). Compared as stored in each row's currency — no FX conversion across marketplaces. Default: null (no bound).

Default: null
shipping_cost_minnumber

Inclusive lower bound on shipping_cost (>= 0). Compared as stored in each row's currency — no FX conversion across marketplaces. Default: null (no bound).

Default: null
sku_statusstring

Amazon listing status on the SKU (active | inactive) — a SKU attribute, not a COGS attribute. Omit = all statuses.

Default: null
skusarray

Optional. SQL IN filter by seller SKU list (array of strings). Default null (all SKUs).

Default: null
sort_bystring

Field to sort rows by. Allowlist: product_cost | shipping_cost | tariffs | total_cogs | starts_at | ends_at. Omit = server default stable order. When sorting on starts_at/ends_at, rows with null in that field are ordered after non-null rows.

Default: null
sort_orderstring

Sort direction: asc | desc (default desc — highest/latest first). Ignored when sort_by is omitted.

Default: null
starts_at_maxstring

yyyy-MM-dd. Keep rows whose starts_at is <= this date (inclusive, day precision). Default: null (no bound).

Default: null
starts_at_minstring

yyyy-MM-dd. Keep rows whose starts_at is >= this date (inclusive, day precision). Default: null (no bound).

Default: null
tariffs_maxnumber

Inclusive upper bound on tariffs (>= 0). Compared as stored in each row's currency — no FX conversion across marketplaces. Default: null (no bound).

Default: null
tariffs_minnumber

Inclusive lower bound on tariffs (>= 0). Compared as stored in each row's currency — no FX conversion across marketplaces. Default: null (no bound).

Default: null
total_cogs_maxnumber

Inclusive upper bound on total_cogs (>= 0). Compared as stored in each row's currency — no FX conversion across marketplaces. Default: null (no bound).

Default: null
total_cogs_minnumber

Inclusive lower bound on total_cogs (>= 0). Compared as stored in each row's currency — no FX conversion across marketplaces. Default: null (no bound).

Default: null

List Amazon Indirect Cost Settings

list_amazon_indirect_cost_settings
Full Description

Return a paginated list of Amazon Indirect Cost SETTINGS (the configuration / 'contract' rows), one row = one setting. This is the CRUD/management surface: use it to view, search, or audit configured Indirect Cost rules and — importantly — to get the cost_id needed by edit_amazon_indirect_cost and delete_amazon_indirect_costs. Each row has cost_id, cost_name, cost_level (h10_account|seller|marketplace|product), frequency, amount (contract total), currency, amortize_daily, starts_at, ends_at (null when open-ended), created_at, and — sparse by level — seller_id, marketplace (short country code), and a nested skus[] array (product level only) carrying per-SKU product identity (sku, asin, product_name, brand, image_url, product_page_url, fulfillment_type, sku_status). No required input. Narrow with seller_ids, marketplace (short codes US/CA/...), skus, cost_level, frequency, cost_name (case-sensitive substring), amount_min/max, created_at_min/max, starts_at_min/max, ends_at_min/max; sort with sort_by (amount | created_at | starts_at | ends_at) + sort_order. NOT for the expanded day-level charges/'bills' (use list_amazon_indirect_costs), NOT for aggregated P&L indirect_cost (use the P&L tools — indirect_cost=0 there may mean unset), and NOT for COGS (use list_amazon_cogs). Amazon only. Filtering by seller_ids / marketplace / skus excludes settings that lack that scope (an h10_account setting never matches a seller_ids filter), so an empty result under a seller_ids filter does NOT prove nothing is configured — query cost_level=h10_account as well before concluding that. A non-empty result means it IS configured; then check whether starts_at/ends_at actually cover the window you are asking about.

Parameters (0 required, 20 optional)
Optional
amount_maxnumber

Inclusive upper bound on the setting amount (> 0). Compared as stored (no FX). Default: null.

Default: null
amount_minnumber

Inclusive lower bound on the setting amount (> 0). Compared as stored (no FX). Default: null.

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

cost_levelstring

Filter by inferred level: h10_account | seller | marketplace | product. Omit = all.

Default: null
cost_namestring

Case-sensitive substring match (LIKE) on the setting name. Omit = no name filter.

Default: null
created_at_maxstring

yyyy-MM-dd. Keep settings whose created_at calendar day is <= this (inclusive).

Default: null
created_at_minstring

yyyy-MM-dd. Keep settings whose created_at calendar day is >= this (inclusive).

Default: null
ends_at_maxstring

yyyy-MM-dd. Keep settings whose ends_at is <= this (inclusive). Open-ended settings (ends_at null) never match an ends_at_* filter.

Default: null
ends_at_minstring

yyyy-MM-dd. Keep settings whose ends_at is >= this (inclusive). Open-ended settings (ends_at null) never match an ends_at_* filter.

Default: null
frequencystring

Filter by frequency: one_time | daily | weekly | monthly | quarterly | half_yearly | annually. Omit = all.

Default: null
marketplacearray

Optional marketplace filter as an array of upper-case region short codes (e.g. ['US', 'CA', 'MX']). Case-sensitive — lower-case codes are rejected. Allowed: AE, AU, BE, BR, CA, CN, DE, EG, ES, FR, IE, IN, IT, JP, MX, NL, PL, SA, SE, SG, TR, UK, US, ZA. Default null (all authorised marketplaces).

Default: null
page_indexinteger

Optional. Page number (integer), starts from 1. Default 1.

Default: null
page_sizeinteger

Optional. Rows per page (integer). Min 5, max 1000. Default 50.

Default: null
seller_idsarray

Optional. SQL IN filter on seller account IDs (array of strings). Profits intersects with sellers from Pacvue token; no intersection → empty result. Default null (all authorised sellers).

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

skusarray

Optional. SQL IN filter by seller SKU list (array of strings). Default null (all SKUs).

Default: null
sort_bystring

Field to sort by: amount | created_at | starts_at | ends_at. Omit = server default.

Default: null
sort_orderstring

Sort direction: asc | desc (default desc). Ignored when sort_by is omitted.

Default: null
starts_at_maxstring

yyyy-MM-dd. Keep settings whose starts_at is <= this (inclusive).

Default: null
starts_at_minstring

yyyy-MM-dd. Keep settings whose starts_at is >= this (inclusive).

Default: null

List Amazon Indirect Costs (Charges)

list_amazon_indirect_costs
Full Description

Return a paginated list of EXPANDED Amazon Indirect Cost CHARGES — the materialized 'bills' derived from Indirect Cost settings (settings ≈ contract; charges ≈ the monthly bills it generates). One row = one occurrence_date × one cost_name; a product-level multi-SKU setting still yields one row per date, with per-SKU split amounts nested under skus[]. Each row carries the setting context (cost_name, cost_level, frequency, currency, amortize_daily, amount, starts_at, ends_at) plus occurrence_date and occurrence_amount. No charge-row ids and no cost_id are exposed — manage configuration via list_amazon_indirect_cost_settings + the write tools. No required input. Use this to VERIFY how a setting lands on the calendar (daily amort vs discrete period points) or reconcile P&L indirect_cost. Narrow with seller_ids, marketplace (short country codes US/CA/...), skus, cost_level, frequency, cost_name, occurrence_date_min/max, occurrence_amount_min/max; sort with sort_by (occurrence_date | occurrence_amount) + sort_order. Dates beyond the backend's ~12-month materialization horizon simply return no rows (not an error). cost_level is h10_account | seller | marketplace | product. Filtering by seller_ids / marketplace / skus excludes charges whose setting lacks that scope — an h10_account-level setting never matches a seller_ids filter, so an empty result under seller_ids does NOT prove nothing is configured; query cost_level=h10_account as well before concluding that. NOT for browsing/managing settings (use list_amazon_indirect_cost_settings and the write tools) or for aggregated P&L indirect_cost (use the P&L tools — indirect_cost=0 there may mean unset); Amazon only.

Parameters (0 required, 16 optional)
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

cost_levelstring

Filter by inferred level: h10_account | seller | marketplace | product. Omit = all.

Default: null
cost_namestring

Case-sensitive substring match (LIKE) on the setting name. Omit = no name filter.

Default: null
frequencystring

Filter by setting frequency: one_time | daily | weekly | monthly | quarterly | half_yearly | annually. Omit = all.

Default: null
marketplacearray

Optional marketplace filter as an array of upper-case region short codes (e.g. ['US', 'CA', 'MX']). Case-sensitive — lower-case codes are rejected. Allowed: AE, AU, BE, BR, CA, CN, DE, EG, ES, FR, IE, IN, IT, JP, MX, NL, PL, SA, SE, SG, TR, UK, US, ZA. Default null (all authorised marketplaces).

Default: null
occurrence_amount_maxnumber

Inclusive upper bound on a row's occurrence_amount (> 0). Compared as stored (no FX). Default: null (no bound).

Default: null
occurrence_amount_minnumber

Inclusive lower bound on a row's occurrence_amount (> 0). Compared as stored (no FX). Default: null (no bound).

Default: null
occurrence_date_maxstring

yyyy-MM-dd. Keep charges whose occurrence_date is <= this day (inclusive).

Default: null
occurrence_date_minstring

yyyy-MM-dd. Keep charges whose occurrence_date is >= this day (inclusive).

Default: null
page_indexinteger

Optional. Page number (integer), starts from 1. Default 1.

Default: null
page_sizeinteger

Optional. Rows per page (integer). Min 5, max 1000. Default 50.

Default: null
seller_idsarray

Optional. SQL IN filter on seller account IDs (array of strings). Profits intersects with sellers from Pacvue token; no intersection → empty result. Default null (all authorised sellers).

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

skusarray

Optional. SQL IN filter by seller SKU list (array of strings). Default null (all SKUs).

Default: null
sort_bystring

Field to sort rows by: occurrence_date | occurrence_amount. Omit = server default.

Default: null
sort_orderstring

Sort direction: asc | desc (default desc). Ignored when sort_by is omitted.

Default: null

List My Products

list_my_products
Full Description

Return a paginated list of the caller's OWN Amazon product rows (one row per SKU x marketplace x seller). Each row carries product identity only: product_name, asin, sku, brand, image_url, product_page_url, seller_id, marketplace, fulfillment_type. No P&L, inventory, or listing-analysis metrics. No required input — default scope is all sellers authorised by the Pacvue token; call with no arguments to page through the full authorised catalog. Use when the user asks to list, browse, or find their own products/SKUs/ASINs across linked seller accounts, wants the product info / details for a SPECIFIC ASIN or SKU in their own catalog (e.g. 'look up the product info for ASIN B0…' — pass it via asins/skus), needs product metadata (title, image, Amazon listing URL) before calling P&L or inventory tools, or wants to resolve which SKUs match a name/brand within their catalog. Narrow with seller_ids, marketplace, asins, skus, fulfillment_type (FBA | FBM), product_name (case-insensitive LIKE on title), or brand_name (case-insensitive LIKE on brand). Not for: market-wide product or competitor research (use search_products / search_inactive_products); comparing your own listing against competitor ASINs (use compare_listings — NOT this tool for a plain single-ASIN info lookup); profit & loss metrics (use get_product_profit_and_loss_summary); inventory on-hand / inbound quantities (use get_inventory_values); deep single-ASIN listing profile / BSR / scores (use get_listing_details). Does not distinguish active vs inactive listing status; rows reflect whatever Profits has ingested. No sort parameters — order is backend-defined.

Parameters (0 required, 11 optional)
Optional
asinsarray

Optional. SQL IN filter by ASIN list (array of strings, e.g. ['B001234567']). Default null (all ASINs).

Default: null
brand_namestring

Optional. Case-insensitive substring match (SQL LIKE '%keyword%') against the brand name. Omit or null = no brand filter (rows with brand: null may still be returned).

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

fulfillment_typestring

Optional fulfillment channel filter: FBA | FBM. Omit to query both FBA and FBM inventory.

Default: null
marketplacearray

Optional marketplace filter as an array of region short codes ONLY (e.g. ['US', 'CA', 'MX']); Amazon SP-API marketplace IDs (e.g. 'ATVPDKIKX0DER'), seller IDs, and domains are rejected. Allowed: AE, AU, BE, BR, CA, CN, DE, EG, ES, FR, IE, IN, IT, JP, MX, NL, PL, SA, SE, SG, TR, UK, US, ZA. Default null (all authorised marketplaces).

Default: null
page_indexinteger

Optional. Page number (integer), starts from 1. Default 1.

Default: null
page_sizeinteger

Optional. Rows per page (integer). Min 5, max 1000. Default 50.

Default: null
product_namestring

Optional. Case-insensitive substring match (SQL LIKE '%keyword%') against the product listing title. Omit or null = no title filter (rows with any title, including empty, may be returned).

Default: null
seller_idsarray

Optional. SQL IN filter on seller account IDs (array of strings). Profits intersects with sellers from Pacvue token; no intersection → empty result. Default null (all authorised sellers).

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

skusarray

Optional. SQL IN filter by seller SKU list (array of strings). Default null (all SKUs).

Default: null

Competitor Keyword Rank Tracker

list_tracked_competitor_keywords
Full Description

Helium 10 Competitor Keyword Rank Tracker. For a main ASIN with competitor ASINs configured in Keyword Tracker, returns the tracked keywords with your rank, each competitor's rank, relative_rank, rank_avg, and Competitor Performance Score (CPS) side-by-side. Use to find rank gaps on shared keywords, prioritize which keywords deserve PPC or listing investment, and monitor whether competitor moves are eroding your visibility. Not for: a single-ASIN view (use list_tracked_keywords); discovering new keywords (use get_keywords_new_suggestion); competitors not yet in Keyword Tracker (add them there first). Errors: invalid_input / invalid_asin / no_result / no_data / rate_limited / upstream_timeout. Returns up to limit rows per call (default 100, max 500); one page inlines at most ~500 rows / ~1MB, and oversized pages are truncated and continue via cursor. If data.pagination.has_more is true the result is incomplete: call again with cursor = data.pagination.next_cursor, but prefer narrowing filters over paginating through everything. Cursors expire 30 minutes after being issued and are bound to the query that issued them.

Parameters (1 required, 9 optional)
Required
asin_or_urlstring

10-character Amazon ASIN or Amazon product URL containing an ASIN; JSON key `asin_or_url`. Required and must not be blank. If the user has not provided an ASIN or product URL, ask them to supply it—do not infer, search for, or invent an ASIN.

Optional
boostedboolean

Optional filter: when `true`, only boosted tracked keywords. When omitted or `false`, no boost-based filter is applied.

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

cursorstring

Opaque pagination cursor from a previous response's pagination.next_cursor. Omit for the first page. Pass it back verbatim with the same query arguments (limit may change between pages); never construct or edit it. Cursors are reusable but expire 30 minutes after being issued (pagination.cursor_expires_at) and are bound to the query that issued them.

Default: null
limitinteger

Number of rows to return. Defaults to 100, max 500; out-of-range values are clamped rather than rejected. request only what the user needs — up to 500 rows per page come back inline (slightly larger asks are truncated and continue via `cursor`). When pagination.has_more is true, fetch the next batch with `cursor`. Do NOT probe with limit=1 to learn the dataset size — every page carries the same total_count/has_more metadata, so ask for the rows you actually need and read the metadata of that response.

Default: 100
marketplacestring

Amazon marketplace short code (e.g. `US`, `UK`, `DE`, `JP`). Optional, case-insensitive. Use one of the marketplace codes exposed in this schema.

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

sort_directionstring

Sort direction sent as `sort.direction`: `asc` or `desc` (case-insensitive).

Default: null
sort_fieldstring

Optional sort field for `competitor_keywords_tracking`; must be one of the PRD sortable fields exposed in this schema.

Default: null
tagsarray

Optional filter: Keyword Tracker tag titles (account scope), OR logic. IO resolves titles to ids; blank entries ignored. Valid tag with no matches → empty rows; unknown/invalid tag title → no data

Default: null

Keyword Tracker

list_tracked_keywords
Full Description

Helium 10 Keyword Tracker. Returns metrics for keywords ALREADY tracked in Keyword Tracker — by ASIN/product URL, or account-wide when the ASIN is omitted — with search volume + trend, organic & sponsored rank + trend, CPR, boost status, tags, and permission-gated keyword_sales and ABA shares. Use for monitoring rank movement, detecting rank drops/gains, assessing visibility after a PPC or listing change, and reviewing the full tracked set. Not for: untracked reverse search (use get_keywords_by_asin); discovering new keywords to add (use get_keywords_new_suggestion); competitor comparison (use list_tracked_competitor_keywords); rank history over time (use get_keywords_rank_history). Errors: invalid_input / invalid_asin / no_result / no_data / rate_limited / upstream_timeout. Returns up to limit rows per call (default 100, max 500); one page inlines at most ~500 rows / ~1MB, and oversized pages are truncated and continue via cursor. If data.pagination.has_more is true the result is incomplete: call again with cursor = data.pagination.next_cursor, but prefer narrowing filters over paginating through everything. Cursors expire 30 minutes after being issued and are bound to the query that issued them.

Parameters (0 required, 10 optional)
Optional
asin_or_urlstring

10-character Amazon ASIN or Amazon product URL containing an ASIN; JSON key `asin_or_url`. Optional for this tool — omit for account-level tracked keywords for the marketplace.

Default: null
boostedboolean

Optional filter: when `true`, only boosted tracked keywords. When omitted or `false`, no boost-based filter is applied.

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

cursorstring

Opaque pagination cursor from a previous response's pagination.next_cursor. Omit for the first page. Pass it back verbatim with the same query arguments (limit may change between pages); never construct or edit it. Cursors are reusable but expire 30 minutes after being issued (pagination.cursor_expires_at) and are bound to the query that issued them.

Default: null
limitinteger

Number of rows to return. Defaults to 100, max 500; out-of-range values are clamped rather than rejected. request only what the user needs — up to 500 rows per page come back inline (slightly larger asks are truncated and continue via `cursor`). When pagination.has_more is true, fetch the next batch with `cursor`. Do NOT probe with limit=1 to learn the dataset size — every page carries the same total_count/has_more metadata, so ask for the rows you actually need and read the metadata of that response.

Default: 100
marketplacestring

Amazon marketplace short code (e.g. `US`, `UK`, `DE`, `JP`). Optional, case-insensitive. Use one of the marketplace codes exposed in this schema.

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

sort_directionstring

Sort direction sent as `sort.direction`: `asc` or `desc` (case-insensitive).

Default: null
sort_fieldstring

Optional sort field for `keywords_tracking`; must be one of the PRD sortable fields exposed in this schema.

Default: null
tagsarray

Optional filter: Keyword Tracker tag titles (account scope), OR logic. IO resolves titles to ids; blank entries ignored. Valid tag with no matches → empty rows; unknown/invalid tag title → no data

Default: null

MT360 Market List

list_user_markets
Full Description

List Helium 10 Market Tracker 360 (MT360) markets for the authenticated account. Returns paginated market rows (id, name, marketplaceId, marketplace site code such as US/UK/JP, type, status, revenue metrics already scaled for display (/100 except Japan marketplaceId 10), defaultDateFrom/defaultDateTo as yyyy-MM-dd when not null, access level, etc.) plus pagination links and meta.hasReadonly. Each row type is a DSA MarketTypeEnum integer: 1=KEYWORDS, 2=BRANDS, 3=ASINS, 4=AUTOMATIC, 5=SUBCATEGORIES. Use this first to discover market_id values before calling other MT360 tools. Returns all market types in one list (keywords, brands, subcategories, ASINs, automatic, etc.). Narrow only with search, marketplace_id (DSA integer enum: 1=US … 10=JP, 12=BR … 24=IE; there is no 11), or pagination. Not for: market-level analytics, product rows, or competitor data — those require market-specific endpoints after you pick a market from this list.

Parameters (0 required, 9 optional)
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

marketplace_idinteger

DSA Amazon marketplace ID filter. Allowed values: 1=US, 2=CA, 3=MX, 4=DE, 5=ES, 6=FR, 7=IT, 8=UK, 9=IN, 10=JP, 12=BR, 13=TR, 14=AU, 15=NL, 16=SG, 17=AE, 18=EG, 19=SA, 20=SE, 21=PL, 22=BE, 23=ZA, 24=IE. There is no 11. Omit to include all marketplaces.

Default: null
pageinteger

1-based page number for paginated market list.

Default: null
per_pageinteger

Number of markets per page (default 10 on DSA backend).

Default: null
readonly_marketsboolean

When true, return only read-only shared markets; when false, owned markets only.

Default: null
readonly_searchstring

Search read-only markets by owner email, username, or market name.

Default: null
searchstring

Case-insensitive market name search. Does not filter by market type.

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

sortstring

Sort field; prefix with '-' for descending (e.g. -createdAt, name).

Default: null

Manage Ads Rule

manage_ads_rule
Full Description

Helium 10 Manage Ads Rule (Ads Rule, step 4 of 4, WRITE). All rule write operations in one tool, selected by action.

Do NOT call this tool with empty or guessed params

This is step 4. Resolve every input FIRST via the earlier steps, and when the user is vague, ASK them — never invent platform / rule_type / ids or call an action just to see what it needs. Hard ordering before draft_open: 1. get_ads_rule_platforms → choose a supported (platform, rule_type). If the user didn't specify, ask which platform and rule_type they want. 2. get_ads_rule_schema(platform, rule_type) → the field catalog + skeleton you build the draft from. 3. get_ads_query_materials → resolve profile_id and campaign ids. Calling draft_open without a known platform+rule_type is an error, not a way to discover them.

Confirmation is REQUIRED before draft_commit and rule_delete

draft_commit materializes the draft as a live rule (automated=true auto-applies and WILL change bids; automated=false is suggest-only and will NOT change bids) and rule_delete permanently removes a live rule (irreversible). BEFORE either, you MUST present a readable summary of exactly what will change and obtain explicit user confirmation. There is no dry-run / preview. draft_open / draft_save / draft_discard do not need confirmation (they never touch live rules).

Rules that use a Tactic cannot be edited via MCP

If a rule uses a Tactic, draft_open(mode=edit) and draft_commit on it return UNSUPPORTED.RULE_HAS_TACTIC (isError). Check uneditable_reason from get_ads_rule / list_ads_rules BEFORE building an edit; if set, do NOT open an edit draft, do NOT retry, and do NOT create a new rule as a substitute (that would run two bid rules on the same targets) — direct the user to the Helium 10 Ads Rules & Automation page. draft_open(mode=create), draft_save and rule_delete are unaffected.

Actions and their required params
  • draft_open (platform, rule_type, mode, profile_id; + source_rule_id when mode=edit): create a draft in the draft box. Does NOT create a real rule. mode=create starts blank; mode=edit back-fills from an existing rule. Returns {draft_id, revision:1, mode, boundRuleId}. rule_type is locked once open.
  • draft_save (draft_id, draft): whole-replace the draft content (the generic rule document) → validate → persist, revision+1. The draft MUST contain rule_name, frequency (with a preset), and at least one criteria (each with an action.type). targets.campaign_ids MAY be empty; an empty campaign_ids means the rule is bound to NO campaign (it will not run against any campaign) — do NOT add a campaign just to pass validation, as that silently narrows the rule's scope. timezone and criteria[].lookback may be omitted — the server fills America/Los_Angeles and {length:14, exclude:2}. On failure returns error.details.issues[] to fix. Optional expected_revision for optimistic locking. Re-save as many times as needed.
  • draft_commit (draft_id): commit the draft to a live rule (create→POST / edit→PUT). Returns {rule_id, isDraft:false}. CONFIRM FIRST.
  • draft_discard (draft_id): delete the draft (does not affect live rules). Non-idempotent: a second call with the same draft_id returns not_found.
  • rule_delete (platform, profile_id, rule_id): delete a live rule. Irreversible. CONFIRM FIRST.

Build the draft from the get_ads_rule_schema skeleton: metric / operator / action values come from the schema, numbers are actual values per unitHints (e.g. ACOS 12% → 0.12). Prerequisites, in order: get_ads_rule_platforms → get_ads_rule_schema → get_ads_query_materials (profile_id / campaign ids).

Parameters (1 required, 11 optional)
Required
actionstring

Operation type. draft_open=create a draft (no real rule); draft_save=save draft content; draft_commit=commit the draft to a real rule (create→POST / edit→PUT, CONFIRM with the user first); draft_discard=delete the draft; rule_delete=delete a live rule (irreversible, CONFIRM first). Required params per action are in the tool description.

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

draftobject/null

The generic rule document (draft_save only, whole-replace). Values (metric/operator/action, units, constraints) come from get_ads_rule_schema; fill actual values per unitHints (e.g. ACOS 12% → 0.12). See the schema skeleton.

Default: null
draft_idstring/null

Draft id returned by draft_open. Required for draft_save / draft_commit / draft_discard. Decimal string (e.g. 2089352922874187778).

Default: null
expected_revisioninteger/null

Optimistic lock (draft_save / draft_commit): pass the last revision you saw to prevent overwriting a concurrent edit.

Default: null
modestring/null

draft_open only. create=blank new rule; edit=bind an existing rule and back-fill (requires source_rule_id).

Default: null
platformstring/null

Platform from get_ads_rule_platforms (e.g. amazon). Required for draft_open and rule_delete.

Default: null
profile_idstring/null

Target profile from get_ads_query_materials(level=profile). Required for draft_open and rule_delete; bound to the draft at open time.

Default: null
rule_idstring/null

Live rule id. Required for rule_delete. 32-character lowercase hex string (e.g. faa679c9b78e4b9fb8b452326f24dd00).

Default: null
rule_typestring/null

Rule type from get_ads_rule_platforms (e.g. BID). Required for draft_open only; locked once the draft is open.

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

source_rule_idstring/null

draft_open + mode=edit only: the existing rule_id (from get_ads_rule) to edit. Overwritten via PUT at commit. 32-character lowercase hex string (e.g. faa679c9b78e4b9fb8b452326f24dd00).

Default: null

Market Share Dashboard

market_share_dashboard
Full Description

Use this tool only when the user requests market share or sales share data for a specific Amazon category.

Triggering: • Market-share or sales-share intent with a specified category → call tool • Market-share intent without a category → request category clarification • Otherwise → do not call

Output: • Returns structured MT360 share data for dashboard rendering only • No summaries, interpretations, opportunity analysis, or guidance may be generated • This tool call represents the final output for the turn

Do not use this tool for forecasting, real-time share checks, market sizing, or educational explanations.

Parameters (1 required)
Required
requestobject

Request parameters for Market Share

Request Image Upload URL

request_image_upload_url
Full Description

Helium 10 helper — requests presigned upload credentials so LOCAL image files are uploaded out-of-band, never base64'd into the conversation. Non-idempotent: each call mints fresh, single-use upload slots. Use whenever the user has local image files bound for an analyze / generate tool.

BEFORE CALLING — do NOT guess these; ground them in what the user actually has. If you can read the files off the user's filesystem, derive both from the directory listing instead of asking: • count = the EXACT number of images the user is uploading (1-5). If the user hasn't said how many (and you can't tell from their attachments or filesystem), ASK first. Do NOT default to 5. • content_type = the actual format: "image/jpeg" for .jpg/.jpeg, "image/png" for .png. One type per batch — if the files are mixed or you can't verify the extensions, ASK rather than assuming.

Returns items[{image_ref, upload_url, upload_method, required_headers, curl_command, max_bytes}], upload_page_url, expires_at. Then pick ONE path by your client's capability: • Shell / HTTP available and the file readable locally (Cursor / Claude Code): run items[].curl_command (replace @<LOCAL_FILE_PATH> with the real path) to PUT each file; a 200 means success. • Pure MCP client that cannot issue HTTP (Claude Desktop / ChatGPT): hand the user upload_page_url (one for the whole batch); they upload all N files in the browser and paste back the N image_ref values.

Pass items[].image_ref to the downstream tool's image_refs.

Parameters (2 required, 2 optional)
Required
content_typestring

REQUIRED. MIME type matching the user's files: image/jpeg for .jpg/.jpeg, image/png for .png. One type per batch; if the files are mixed or unknown, ask the user rather than guessing — this value is signed into the presigned URL, so a mismatch makes the upload fail.

Options:image/jpegimage/png
countinteger

Exact number of images the user is uploading (1-5). Use the real count from the user's files (read it off their filesystem when you can) — do NOT default to 5; ask the user only when you can't determine it yourself.

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Retrieve Listing by ASIN

retrieve_listing_by_asin
Full Description

Helium 10 Listing Builder — fetches the current Amazon catalog images and listing text for a target ASIN. Reads the live Amazon catalog (real-time snapshot). Returns images (list of {url, variant}) plus the current product_name / item_highlight / bullet_points / description. Use to pull a listing's current live copy and images as the working baseline, or to check what the Amazon catalog shows for an ASIN right now. Not for: reading or scoring a listing without rewriting its copy (use get_listing_details / get_listing_score).

Parameters (2 required, 2 optional)
Required
asinstring

Amazon Standard Identification Number (ASIN). Must be exactly 10 alphanumeric characters, e.g. B08N5WRWNW.

marketplacestring

Marketplace short code (case-sensitive). Confirm the marketplace with the user once, before the first Listing Builder call of the session; every later Listing Builder tool reuses that same value — do NOT ask the user for it again once it is set. Supported values: US, CA, MX, DE, ES, IT, FR, UK, IN, NL, AU, JP, BE, BR.

Options:USCAMXDEESITFRUKINNLAUJPBEBR
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Rewrite Listing Section

rewrite_listing_section
Full Description

Helium 10 Listing Builder — rewrites ONE section of an existing listing: target selects the title, a single bullet, or the description. Live LLM call, non-idempotent; output language is derived server-side from marketplace. title and item_highlight are a matched pair — a 'title' rewrite regenerates both in the same AI call. Amazon now splits the legacy single <=200-character title into TWO fields: title (concise, <=75 characters) and item_highlight (<=125 characters). A short ~75-character title is CORRECT and compliant - do NOT lengthen it, keyword-stuff it, or treat it as incomplete; extra selling points and keywords belong in item_highlight. The two fields together replace the old long title. Use for targeted refinement: strengthen one field with fresh keywords while leaving the rest of the listing untouched. Not for: a full regeneration (use generate_listing with a revised allocation).

Parameters (6 required, 14 optional)
Required
bulletsarray

REQUIRED. Current listing bullet points — pass the full list. When target is 'bullet', `rewrite_content` must match one of the entries verbatim.

marketplacestring

REQUIRED. Marketplace short code (case-sensitive). Confirm the marketplace with the user once, before the first Listing Builder call of the session; every later Listing Builder tool reuses that same value — do NOT ask the user for it again once it is set. Supported values: US, CA, MX, DE, ES, IT, FR, UK, IN, NL, AU, JP, BE, BR.

Options:USCAMXDEESITFRUKINNLAUJPBEBR
rewrite_contentstring

The exact text to rewrite. For 'bullet': must be one of the `bullets` array entries verbatim.

targetstring

Which section to rewrite: 'title', 'bullet', or 'description'.

Options:titlebulletdescription
target_keywordsarray

Exactly 3 semantically-aligned keyword rows for this section, drawn from the find_keywords_with_multi_source Keyword Bank excluding keywords already allocated in the baseline listing. Pass the rows verbatim — the `keyword` field maps to `phrase`.

titlestring

REQUIRED. Current listing title. For a 'title' rewrite this is the text being rewritten (together with item_highlight); for other targets it is baseline context.

Optional
brand_namestring

(Optional) Brand name — pass the same brand_name you supplied in product_info to generate_listing, so the rewrite references the brand consistently.

Default: null
brand_voicestring

(Optional) Brand voice text from analyze_product_images output (the brand_voice field). Pass it to maintain brand tone in the rewrite.

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

descriptionstring

Current listing description — include it even when it is not the target.

Default: null
item_highlightstring

Current Amazon Item Highlight. Only relevant when target is 'title' — provide the baseline so it can be rewritten together with the title in the same AI call. Ignored for 'bullet' / 'description'.

Default: null
kpsinteger

(Optional) Keyword positioning score hint.

Default: null
max_bullet_leninteger

(Optional, bullet only) Maximum characters per bullet point (50-700). Use the same value as generate_listing if available.

Default: null
min_bullet_leninteger

(Optional, bullet only) Minimum characters per bullet point (50-700). Defaults to max(50, max_bullet_len - 40) when max_bullet_len is set.

Default: null
optional_keywordsarray

(Optional, description only) PASS THE ENTIRE REMAINING KEYWORD BANK HERE — typically 200+ phrases, not just a few. These are every phrase from the find_keywords_with_multi_source Keyword Bank that is NOT in target_keywords and was NOT allocated in generate_listing. Unlike target_keywords (which MUST all appear), these are weave-if-it-fits: the model includes whatever reads naturally and silently drops the rest. (e.g. ['bed guard rail', 'hospital bed rails', 'senior bed rail', ...]). Description-rewrite only; ignored for title/bullet.

Default: null
parent_request_idinteger

The request_id of the listing being iterated on (for provenance tracking).

Default: null
product_namestring

Product name for additional context.

Default: null
rufus_asinsarray

(Optional, description only) Up to 2 ASINs whose Alexa for Shopping Q&A content (formerly Rufus Q&A — Amazon rebranded Rufus to Alexa for Shopping in 2026) should be fetched. Parameter name kept as `rufus_asins` for backward compatibility. Pass the same values used in generate_listing if available.

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

user_feedbackstring

(Optional) User refinement hint for the AI, e.g. 'make it shorter' or 'focus on durability'.

Default: null

Search Alert Events

search_alert_events
Full Description

Helium 10 Alerts — query listing-change alert events for a seller. Supports three modes: (1) recent events — omit dates, returns latest limit events; (2) date-range — provide start_time + end_time; (3) single-event lookup — provide fired_at timestamp. Optionally filter by ASIN or alert_types. Do NOT use for Buy Box ownership history; use search_buybox_history instead. Returns up to limit rows per call (default 20, max 100); one page inlines at most ~100 rows / ~1MB, and oversized pages are truncated and continue via cursor. If data.pagination.has_more is true the result is incomplete: call again with cursor = data.pagination.next_cursor, but prefer narrowing filters over paginating through everything. Cursors expire 30 minutes after being issued and are bound to the query that issued them.

Parameters (2 required, 9 optional)
Required
marketplacestring

Marketplace code: US, UK, DE, JP, etc.

Options:USCAMXDEESITFRUKINNLAUJPAEBRSA
seller_idstring

Helium 10 seller identifier.

Optional
alert_typesarray

Optional. Filter to specific alert type codes. Default: null (all types).

Default: null
asinstring

Optional. Restrict results to a single ASIN (10-char alphanumeric, e.g. B01LR5S6HK). Default: null (all ASINs).

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

cursorstring

Opaque pagination cursor from a previous response's pagination.next_cursor. Omit for the first page. Pass it back verbatim with the same query arguments (limit may change between pages); never construct or edit it. Cursors are reusable but expire 30 minutes after being issued (pagination.cursor_expires_at) and are bound to the query that issued them.

Default: null
end_timestring

End of date-range query (inclusive). Format: YYYY-MM-DD or YYYY-MM-DD HH:MM:SS (UTC). Required together with start_time for date-range mode.

Default: null
fired_atinteger

Unix timestamp (seconds, UTC) of a specific event to fetch. Use for single-event detail lookup; takes precedence over date-range mode.

Default: null
limitinteger

Number of rows to return. Defaults to 20, max 100; out-of-range values are clamped rather than rejected. request only what the user needs — up to 100 rows per page come back inline (slightly larger asks are truncated and continue via `cursor`). When pagination.has_more is true, fetch the next batch with `cursor`. Do NOT probe with limit=1 to learn the dataset size — every page carries the same total_count/has_more metadata, so ask for the rows you actually need and read the metadata of that response.

Default: 20
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

start_timestring

Start of date-range query (inclusive). Format: YYYY-MM-DD or YYYY-MM-DD HH:MM:SS (UTC). Required together with end_time for date-range mode.

Default: null

Top Search Terms & Brand Analytics

search_amazon_brand_analytics
Full Description

Helium 10 Top Search Terms & Brand Analytics (formerly Black Box — ABA). Exports Amazon Brand Analytics (ABA) Top Search Terms: per-phrase search frequency rank, exact/broad search volume with trend, CPC range, the top-3 clicked ASINs with click & conversion share, combined clicked-product metrics, and share trend vs the prior period. Use to find which products consumers click for a term, identify click/conversion-share leaders, compare ABA periods week-over-week or month-over-month, and find which keywords a competitor ASIN appears in. Returns up to limit rows per call (default 20, max 10000); one page inlines at most ~500 rows / ~1MB, and requests far above that (>1000 rows or >~2MB) are delivered as a download link instead of inline rows. If data.pagination.has_more is true the result is incomplete: call again with cursor = data.pagination.next_cursor, but prefer narrowing filters over paginating through everything. Cursors expire 30 minutes after being issued and are bound to the query that issued them. Set response_format='download' when the user explicitly wants the data as a file. REQUIRES Brand Registry — non-Brand accounts get PERMISSION.DENIED. Not for: generic keyword search volume only (use search_amazon_keywords).

Parameters (0 required, 11 optional)
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

cursorstring/null

Opaque pagination cursor from a previous response's pagination.next_cursor. Omit for the first page. Pass it back verbatim with the same query arguments (limit may change between pages); never construct or edit it. Cursors are reusable but expire 30 minutes after being issued (pagination.cursor_expires_at) and are bound to the query that issued them.

detail_levelstring

Projection tier - request less than the full row to save tokens. 'summary' returns only: event_date, phrase, search_volume, search_volume_previous, search_frequency_rank, search_frequency_rank_previous, suggested_ppc_bid, clicked_product_1_amazon_standard_identification_number, clicked_product_1_title, clicked_product_1_click_share, clicked_product_1_conversion_share, total_clicked_products_click_share, total_clicked_products_conversion_share. 'full' (default) returns every field. Pick a tier ONLY when its listed fields cover the whole task - anything beyond them needs 'full' or a custom `fields` list; a tier never errors on missing fields, it just omits them.

Options:summaryfull
Default: full
export_formatstring

File format when results are delivered as a download (ignored for inline delivery). 'json' (default): gzip-compressed JSON, best for programmatic analysis. 'csv': UTF-8 CSV that opens directly in Excel/Sheets - prefer it when the user wants a spreadsheet/report file. Columns are the union of row fields; nested values stay JSON-encoded.

Options:jsoncsv
Default: json
fieldsarray/null

Optional projection: return only these row fields, to save tokens when you need a few columns. Unknown names get a self-healing error listing the available fields. Overrides detail_level when both are set. Omit for the full field set.

filtersobject

Structured Amazon Brand Analytics search filters object. Pass an object with the documented fields; do not pass a string.

limitinteger

Number of rows to return. Defaults to 20, max 10000; out-of-range values are clamped rather than rejected. Rows are large (~4KB per row), so request only what the user needs — up to 500 rows per page come back inline (slightly larger asks are truncated and continue via `cursor`); requests far above the inline budget (>1000 rows or very large payloads) are delivered as a download link (response_format=auto). When pagination.has_more is true, fetch the next batch with `cursor`. Do NOT probe with limit=1 to learn the dataset size — every page carries the same total_count/has_more metadata, so ask for the rows you actually need and read the metadata of that response.

Default: 20
marketplacestring

Required. Amazon marketplace code. Allowed values: US, CA, MX, DE, ES, IT, FR, UK, IN, NL, AU, JP, AE, BR, SA.

Options:USCAMXDEESITFRUKINNLAUJPAEBRSA
Default: US
response_formatstring

How results are delivered. 'auto' (default): rows are returned inline when they fit the response budget, otherwise they are exported to a file and data.export.download_url is returned instead — so simply request the amount of data you need via `limit`. 'inline': always inline, oversized pages are truncated and continue via cursor. 'download': always a downloadable file, even for small results; the file contains exactly the window selected by `limit`/`cursor`, so size `limit` to what is wanted (the tool's max for the whole dataset). Use 'download' when the user wants a file or when you need many rows for analysis (fetch the link in your execution environment instead of paging through the conversation).

Options:autoinlinedownload
Default: auto
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

sort_bystring/null

Amazon Brand Analytics sort field. Use default when the user does not request a specific sort; the backend default sorts search volume descending. Use the bare field for ascending/smallest/lowest/A-to-Z sort, and the same field prefixed with '-' for descending/largest/highest/Z-to-A sort. For search_frequency_rank, ascending means more popular (lower rank) first.

Options:defaultsearch_volume-search_volumesearch_frequency_rank-search_frequency_ranktotal_clicked_products_click_share-total_clicked_products_click_sharetotal_clicked_products_conversion_share-total_clicked_products_conversion_shareclicked_product_1_click_share-clicked_product_1_click_shareclicked_product_2_click_share-clicked_product_2_click_shareclicked_product_3_click_share-clicked_product_3_click_shareclicked_product_1_amazon_standard_identification_number-clicked_product_1_amazon_standard_identification_numberclicked_product_2_amazon_standard_identification_number-clicked_product_2_amazon_standard_identification_numberclicked_product_3_amazon_standard_identification_number-clicked_product_3_amazon_standard_identification_numberclicked_product_1_conversion_share-clicked_product_1_conversion_shareclicked_product_2_conversion_share-clicked_product_2_conversion_shareclicked_product_3_conversion_share-clicked_product_3_conversion_sharetotal_clicked_products_sales-total_clicked_products_salestotal_clicked_products_revenue-total_clicked_products_revenuetotal_clicked_products_review_count-total_clicked_products_review_countclicked_products_average_rating-clicked_products_average_ratingclicked_products_average_monthly_age-clicked_products_average_monthly_agephrase-phrasecost_per_click-cost_per_clickexact_title_match_products_count-exact_title_match_products_countresults_number-results_numbercurrent_search_volume-current_search_volume

Keyword Database Search

search_amazon_keywords
Full Description

Helium 10 Keyword Database Search (formerly Black Box — Search Keywords). Searches the FULL Helium 10 keyword database (not one ASIN's keywords) by filters (search-volume / impression range, word count, competing products, price, monthly revenue, reviews, rating, category, density, broad reach potential, and top-10 competitor distribution buckets). Returns paginated keyword rows with demand metrics, competitive landscape, and aggregated top-10 competitor profile data. Use for market-level keyword discovery, low-competition keyword mining, niche sizing by demand, and category keyword-landscape analysis — no ASIN or seed term needed. Returns up to limit rows per call (default 20, max 200); one page inlines at most ~500 rows / ~1MB, and oversized pages are truncated and continue via cursor. If data.pagination.has_more is true the result is incomplete: call again with cursor = data.pagination.next_cursor, but prefer narrowing filters over paginating through everything. Cursors expire 30 minutes after being issued and are bound to the query that issued them. Not for: ABA click/conversion share & top clicked products (use search_amazon_brand_analytics); product lists (use search_products / search_inactive_products). If the user asks for historical Search Volume for returned keywords, call get_keywords_search_volume_history once per selected phrase.

Parameters (0 required, 8 optional)
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

cursorstring/null

Opaque pagination cursor from a previous response's pagination.next_cursor. Omit for the first page. Pass it back verbatim with the same query arguments (limit may change between pages); never construct or edit it. Cursors are reusable but expire 30 minutes after being issued (pagination.cursor_expires_at) and are bound to the query that issued them.

fieldsarray/null

Optional projection: return only these row fields, to save tokens when you need a few columns. Unknown names get a self-healing error listing the available fields. Overrides detail_level when both are set. Omit for the full field set.

filtersobject

Structured keywords search filters object. Pass an object with the documented fields; do not pass a string.

limitinteger

Number of rows to return. Defaults to 20, max 200; out-of-range values are clamped rather than rejected. request only what the user needs — up to 500 rows per page come back inline (slightly larger asks are truncated and continue via `cursor`). When pagination.has_more is true, fetch the next batch with `cursor`. Do NOT probe with limit=1 to learn the dataset size — every page carries the same total_count/has_more metadata, so ask for the rows you actually need and read the metadata of that response.

Default: 20
marketplacestring

Required. Amazon marketplace code. Allowed values: US, CA, MX, DE, ES, IT, FR, UK, IN, NL, AU, JP, AE, BR, SA.

Options:USCAMXDEESITFRUKINNLAUJPAEBRSA
Default: US
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

sort_bystring/null

Keywords sort field. Use default when the user does not request a specific sort. Use the bare field for ascending/smallest/lowest/A-to-Z sort, and the same field prefixed with '-' for descending/largest/highest/Z-to-A sort. Allowed fields: phrase=keyword phrase text; last_30_days_sales=sales in the last 30 days; monthly_revenue=monthly revenue; price=price; reviews_number=review count; reviews_rating=review rating; best_sellers_rank=Best Sellers Rank, where lower rank means better sales rank; sellers_number=seller count; variation_count=variation count; exact_impression_count_last_30_days=exact 30-day impression count; words_count=number of words in the phrase; results_number=number of Amazon search results; broad_reach_potential=broad reach potential.

Options:defaultphrase-phraselast_30_days_sales-last_30_days_salesmonthly_revenue-monthly_revenueprice-pricereviews_number-reviews_numberreviews_rating-reviews_ratingbest_sellers_rank-best_sellers_ranksellers_number-sellers_numbervariation_count-variation_countexact_impression_count_last_30_days-exact_impression_count_last_30_dayswords_count-words_countresults_number-results_numberbroad_reach_potential-broad_reach_potential

Browse Node Finder

search_browse_nodes
Full Description

Helium 10 Browse Node Finder for Review Insights. Given a marketplace and a fuzzy Amazon category phrase (query), returns up to 5 candidate browse_node_id values, each paired with the official Amazon category name (displayName) and its root-to-leaf category path for disambiguating same-name categories. Use when the user names a category in natural language and does not yet have a confirmed browse node id—before calling get_category_review_analysis. Does not return Customer Feedback review or return analysis. Ask the user to confirm one browse_node_id, then call get_category_review_analysis. Not for: already-confirmed browse node ids (call get_category_review_analysis directly); ASIN-level review insights (use get_asin_review_analysis). Marketplace must be a two-letter uppercase code (e.g. US). Successful calls do not consume MCP quota.

Parameters (2 required, 2 optional)
Required
marketplacestring

Amazon marketplace code. Two-letter UPPERCASE code; supported values: US, UK, FR, IT, DE, ES, JP. Lowercase or unsupported codes are rejected with INVALID_INPUT.INVALID_MARKETPLACE.

Options:USUKFRITDEESJP
querystring

Fuzzy Amazon category phrase in natural language (e.g. "yoga mats"). Must be non-empty; blank or whitespace-only values are rejected with INVALID_INPUT.INVALID_KEYWORD.

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Search Buy Box History

search_buybox_history
Full Description

Helium 10 Alerts — Buy Box ownership history for a specific ASIN over a date window. Returns offer-change events with Buy Box winner (seller ID), number of competing sellers, and timestamps, plus the seller's overall Buy Box win percentage for the queried period (computed over the whole window, not just the returned page). Use for analysing Buy Box competition patterns and win share over time; not for general listing-change monitoring (use search_alert_events). Returns up to limit rows per call (default 50, max 10000); one page inlines at most ~100 rows / ~1MB, and oversized pages are truncated and continue via cursor. If data.pagination.has_more is true the result is incomplete: call again with cursor = data.pagination.next_cursor, but prefer narrowing filters over paginating through everything. Cursors expire 30 minutes after being issued and are bound to the query that issued them.

Parameters (3 required, 6 optional)
Required
asinstring

Amazon ASIN to query, 10-char alphanumeric (e.g. B01LR5S6HK).

marketplacestring

Marketplace code: US, UK, DE, JP, etc.

Options:USCAMXDEESITFRUKINNLAUJPAEBRSA
seller_idstring

Helium 10 seller identifier.

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

cursorstring

Opaque pagination cursor from a previous response's pagination.next_cursor. Omit for the first page. Pass it back verbatim with the same query arguments (limit may change between pages); never construct or edit it. Cursors are reusable but expire 30 minutes after being issued (pagination.cursor_expires_at) and are bound to the query that issued them.

Default: null
end_timestring

End of the query window (inclusive). Format: YYYY-MM-DD or YYYY-MM-DD HH:MM:SS (UTC). Example: "2025-03-31" or "2025-03-31 23:59:59". Optional, but must be provided together with start_time — providing only one of the two is invalid. Omit both to use the default 7-day window.

Default: null
limitinteger

Number of rows to return. Defaults to 50, max 10000; out-of-range values are clamped rather than rejected. request only what the user needs — up to 100 rows per page come back inline (slightly larger asks are truncated and continue via `cursor`). When pagination.has_more is true, fetch the next batch with `cursor`. Do NOT probe with limit=1 to learn the dataset size — every page carries the same total_count/has_more metadata, so ask for the rows you actually need and read the metadata of that response.

Default: 50
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

start_timestring

Start of the query window (inclusive). Format: YYYY-MM-DD or YYYY-MM-DD HH:MM:SS (UTC). Example: "2025-01-01" or "2025-01-01 00:00:00". Optional, but must be provided together with end_time — providing only one of the two is invalid. Omit both to use the default 7-day window.

Default: null

Search Competitor Products By ASIN

search_competitors_by_asin
Full Description

Helium 10 Competitor Search (formerly Black Box — Competitors). Given one required seed ASIN, returns similar competing listings with price, sales, revenue, reviews, and overlap signals; Advanced filters run on the database server. Use for competitor benchmarks, pricing studies, and pre-launch competitive scans. Not for: broad product discovery without a seed ASIN (use search_products); keyword niche sets (use search_niche_by_keyword). If the user asks for historical Price, call get_asin_price_history; for BSR history, call get_asin_bsr_history; for Review Count / Rating history, call get_asin_reviews_history — once per selected ASIN.

Parameters (1 required, 5 optional)
Required
asinstring

Required. ASIN whose competitors should be found.

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

filtersobject

Structured competitors search filters object. Pass an object with the documented fields; do not pass a string.

marketplacestring

Required. Amazon marketplace code. Allowed values: US, CA, MX, DE, ES, IT, FR, UK, IN, NL, AU, JP, AE, BR, SA.

Options:USCAMXDEESITFRUKINNLAUJPAEBRSA
Default: US
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

sort_bystring/null

Result sort field. Use default when the user does not request a specific sort. In most cases, use the bare field for ascending/smallest/lowest/oldest sort and the same field prefixed with '-' for descending/largest/highest/newest sort. Exception: use age for oldest-first and -age for newest-first. For sales_rank, ascending means better (lower) Best Sellers Rank first.

Options:defaultmonthly_sales-monthly_saleschild_monthly_sales-child_monthly_salesmonthly_revenue-monthly_revenuechild_monthly_revenue-child_monthly_revenueprice-pricereview_count-review_countsales_rank-sales_ranknumber_of_sellers-number_of_sellerssales_year_over_year-sales_year_over_yearprice_change-price_changesales_change-sales_changesales_to_reviews-sales_to_reviewsnumber_of_images-number_of_imagesvariation_count-variation_countweight-weightage-agep_index-p_index

Search Walmart Competitor Items

search_competitors_by_item_id
Full Description

Helium 10 Competitor Search for Walmart. Given one Walmart item, returns the walmart.com items that rank on the same search phrases, ordered by how strongly they overlap, each with its item ID, title, and image. Identity fields only - no metrics. Use for: building a competitor set on Walmart when the user has an item but no competitor list, before a keyword comparison or a listing review. The item IDs it returns are meant to be fed into compare_item_keywords or get_keywords_by_item_id. Not for: Amazon products - use search_competitors_by_asin instead. Do not use it to compare competitors on price, sales, revenue, BSR, or reviews: Walmart has no such data here and this tool takes no filter or sort arguments.

Parameters (1 required, 2 optional)
Required
item_idstring

Single Walmart item ID, all digits (e.g. 10450114). It is the numeric segment at the end of a walmart.com product URL. Amazon ASINs are not accepted here - use search_competitors_by_asin for Amazon.

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Discontinued Product Search

search_inactive_products
Full Description

Helium 10 Product Research (formerly Black Box — Products, inactive view). Discovers Amazon listings that are now inactive/discontinued/dropped but were active and tracked within the last 360 days, by filters (category, last-active-date, historical sales/revenue, reviews, price, brand, fulfillment). Returns last known price, 360-day historical sales & revenue, review count, and rating. Use for market-gap mining, vacated-niche discovery, dropped-competitor post-mortems, and replication-candidate research. Returns up to limit rows per call (default 25, max 500); one page inlines at most ~500 rows / ~1MB, and oversized pages are truncated and continue via cursor. If data.pagination.has_more is true the result is incomplete: call again with cursor = data.pagination.next_cursor, but prefer narrowing filters over paginating through everything. Cursors expire 30 minutes after being issued and are bound to the query that issued them. Not for: active listings (use search_products); keyword research (use search_amazon_keywords). If the user asks for historical Price for returned inactive products, call get_asin_price_history once per selected ASIN.

Parameters (0 required, 8 optional)
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

cursorstring/null

Opaque pagination cursor from a previous response's pagination.next_cursor. Omit for the first page. Pass it back verbatim with the same query arguments (limit may change between pages); never construct or edit it. Cursors are reusable but expire 30 minutes after being issued (pagination.cursor_expires_at) and are bound to the query that issued them.

fieldsarray/null

Optional projection: return only these row fields, to save tokens when you need a few columns. Unknown names get a self-healing error listing the available fields. Overrides detail_level when both are set. Omit for the full field set.

filtersobject

Structured inactive products search filters object. Pass an object with the documented fields; do not pass a string.

limitinteger

Number of rows to return. Defaults to 25, max 500; out-of-range values are clamped rather than rejected. request only what the user needs — up to 500 rows per page come back inline (slightly larger asks are truncated and continue via `cursor`). When pagination.has_more is true, fetch the next batch with `cursor`. Do NOT probe with limit=1 to learn the dataset size — every page carries the same total_count/has_more metadata, so ask for the rows you actually need and read the metadata of that response.

Default: 25
marketplacestring

Required. Amazon marketplace code. Allowed values: US, CA, MX, DE, ES, IT, FR, UK, IN, NL, AU, JP, AE, BR, SA.

Options:USCAMXDEESITFRUKINNLAUJPAEBRSA
Default: US
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

sort_bystring/null

Inactive products sort field. Use default when the user does not request a specific sort. In most cases, use the bare field for ascending/smallest/lowest/oldest/A-to-Z sort and the same field prefixed with '-' for descending/largest/highest/newest/Z-to-A sort. Exception: use age for oldest/higher age first and -age for newest/lower age first. Natural-language mappings: age=product age; buy_box_seller=Buy Box seller; buy_box_seller_country=Buy Box seller country; best_month=best sales month; brand=brand; review_count=review count; reviews_rating=review rating; sales_rank=Best Sellers Rank (ascending means better/lower rank first); seller_type=seller or fulfillment type; size_tier=Amazon size tier; title=product title; weight=product/package weight; variation_count=variation count; number_of_images=image count; last_active_date=last active date; latest_price=latest known price; last_360_days_sales=parent sales while active in the last 360 days; last_360_days_revenue=parent revenue while active in the last 360 days; last_360_days_child_sales=child Amazon Standard Identification Number sales while active in the last 360 days; last_360_days_child_revenue=child Amazon Standard Identification Number revenue while active in the last 360 days.

Options:defaultage-agebuy_box_seller-buy_box_sellerbuy_box_seller_country-buy_box_seller_countrybest_month-best_monthbrand-brandreview_count-review_countreviews_rating-reviews_ratingsales_rank-sales_rankseller_type-seller_typesize_tier-size_tiertitle-titleweight-weightvariation_count-variation_countnumber_of_images-number_of_imageslast_active_date-last_active_datelatest_price-latest_pricelast_360_days_sales-last_360_days_saleslast_360_days_revenue-last_360_days_revenuelast_360_days_child_sales-last_360_days_child_saleslast_360_days_child_revenue-last_360_days_child_revenue

Niche Search by Keyword

search_niche_by_keyword
Full Description

Helium 10 Niche Search (formerly Black Box — Niche). Given one required search keyword, returns a niche-level summary (totals/averages) plus related products with Parent/ASIN sales, revenue, price, BSR, and reviews; Advanced filters run on the database server. Use for niche sizing and opportunity scans after the user has a search term. Not for: product discovery without a keyword (use search_products); keyword-row mining (use search_amazon_keywords); ASIN competitor sets (use search_competitors_by_asin). If the user asks for historical Price, call get_asin_price_history; for BSR history, call get_asin_bsr_history; for Review Count / Rating history, call get_asin_reviews_history — once per selected ASIN.

Parameters (1 required, 5 optional)
Required
phrasestring

Required. Niche keyword phrase to analyze. Max 500 characters.

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

filtersobject

Structured niche search filters object. Pass an object with the documented fields; do not pass a string.

marketplacestring

Required. Amazon marketplace code. Allowed values: US, CA, MX, DE, ES, IT, FR, UK, IN, NL, AU, JP, AE, BR, SA.

Options:USCAMXDEESITFRUKINNLAUJPAEBRSA
Default: US
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

sort_bystring/null

Result sort field. Use default when the user does not request a specific sort. In most cases, use the bare field for ascending/smallest/lowest/oldest sort and the same field prefixed with '-' for descending/largest/highest/newest sort. Exception: use age for oldest-first and -age for newest-first. For sales_rank, ascending means better (lower) Best Sellers Rank first. For organic_rank, ascending means better (lower) organic position in Amazon search results for the searched phrase first — the same order niche rows use by default.

Options:defaultmonthly_sales-monthly_saleschild_monthly_sales-child_monthly_salesmonthly_revenue-monthly_revenuechild_monthly_revenue-child_monthly_revenueprice-pricereview_count-review_countsales_rank-sales_ranknumber_of_sellers-number_of_sellerssales_year_over_year-sales_year_over_yearprice_change-price_changesales_change-sales_changesales_to_reviews-sales_to_reviewsnumber_of_images-number_of_imagesvariation_count-variation_countweight-weightage-ageorganic_rank-organic_rank

Product Targeting by ASIN

search_product_targets_by_asin
Full Description

Helium 10 Product Targeting (formerly Black Box — Product Targeting). Given 1–10 seed ASINs (asin_list), returns target ASINs from Frequently Bought Together, Customers Also Bought, and Amazon Suggested for PPC product targeting and Sponsored Display. At most 10 ASINs per call; more than 10 must error (do not silently truncate). Use to plan ad placements, bundles, and complementary catalog moves. Not for: direct competitor similarity (use search_competitors_by_asin). If the user asks for historical Price, call get_asin_price_history; for BSR history, call get_asin_bsr_history; for Review Count / Rating history, call get_asin_reviews_history — once per selected ASIN.

Parameters (1 required, 7 optional)
Required
asin_listarray

Required. 1 to 10 seed ASINs to find product targets for, each 10 uppercase letters or digits. More than 10, or an entry that is not a valid ASIN, is rejected.

Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

filtersobject

Structured product targets search filters object. Pass an object with the documented fields; do not pass a string.

marketplacestring

Required. Amazon marketplace code. Allowed values: US, CA, MX, DE, ES, IT, FR, UK, IN, NL, AU, JP, AE, BR, SA.

Options:USCAMXDEESITFRUKINNLAUJPAEBRSA
Default: US
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

sort_bystring/null

Result sort field. Use default when the user does not request a specific sort. In most cases, use the bare field for ascending/smallest/lowest/oldest sort and the same field prefixed with '-' for descending/largest/highest/newest sort. Exception: use age for oldest-first and -age for newest-first. For sales_rank, ascending means better (lower) Best Sellers Rank first.

Options:defaultmonthly_sales-monthly_saleschild_monthly_sales-child_monthly_salesmonthly_revenue-monthly_revenuechild_monthly_revenue-child_monthly_revenueprice-pricereview_count-review_countsales_rank-sales_ranknumber_of_sellers-number_of_sellerssales_year_over_year-sales_year_over_yearprice_change-price_changesales_change-sales_changesales_to_reviews-sales_to_reviewsnumber_of_images-number_of_imagesvariation_count-variation_countweight-weightage-age
sourcearray/null

Target sources to keep: F=Frequently Bought Together, A=Amazon Suggested, C=Customers Also Bought. Omit to include every source.

weeksinteger/null

How many weeks of Customers Also Bought history to use. Defaults to 20.

Product Research

search_products
Full Description

Helium 10 Product Research (formerly Black Box — Products, active view). Discovers currently-active Amazon listings by product filters (category, brand/seller, price, sales, revenue, BSR, reviews, rating, sellers, fulfillment, size tier, opportunity score, identifiers, and more). Returns a ranked list with revenue estimates, sales velocity, review metrics, and opportunity scores. Use for product opportunity discovery, niche sizing, competitor/brand/seller analysis, category supply research, and sourcing qualification. Returns up to limit rows per call (default 25, max 500); one page inlines at most ~500 rows / ~1MB, and oversized pages are truncated and continue via cursor. If data.pagination.has_more is true the result is incomplete: call again with cursor = data.pagination.next_cursor, but prefer narrowing filters over paginating through everything. Cursors expire 30 minutes after being issued and are bound to the query that issued them. Not for: discontinued listings (use search_inactive_products); keyword-first research (use search_amazon_keywords); ABA Top Search Terms (use search_amazon_brand_analytics). If the user asks for historical Price, call get_asin_price_history; for BSR history, call get_asin_bsr_history; for Review Count / Rating history, call get_asin_reviews_history — once per selected ASIN.

Parameters (0 required, 8 optional)
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

cursorstring/null

Opaque pagination cursor from a previous response's pagination.next_cursor. Omit for the first page. Pass it back verbatim with the same query arguments (limit may change between pages); never construct or edit it. Cursors are reusable but expire 30 minutes after being issued (pagination.cursor_expires_at) and are bound to the query that issued them.

fieldsarray/null

Optional projection: return only these row fields, to save tokens when you need a few columns. Unknown names get a self-healing error listing the available fields. Overrides detail_level when both are set. Omit for the full field set.

filtersobject

Structured products search filters object. Pass an object with the documented fields; do not pass a string.

limitinteger

Number of rows to return. Defaults to 25, max 500; out-of-range values are clamped rather than rejected. request only what the user needs — up to 500 rows per page come back inline (slightly larger asks are truncated and continue via `cursor`). When pagination.has_more is true, fetch the next batch with `cursor`. Do NOT probe with limit=1 to learn the dataset size — every page carries the same total_count/has_more metadata, so ask for the rows you actually need and read the metadata of that response.

Default: 25
marketplacestring

Required. Amazon marketplace code. Allowed values: US, CA, MX, DE, ES, IT, FR, UK, IN, NL, AU, JP, AE, BR, SA.

Options:USCAMXDEESITFRUKINNLAUJPAEBRSA
Default: US
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

sort_bystring/null

Products sort field. Use the bare field for ascending/smallest/lowest/oldest/A-to-Z sort, and the same field prefixed with '-' for descending/largest/highest/newest/Z-to-A sort. Use default when the user does not request a specific sort. For sales_rank, ascending means better (lower) Best Sellers Rank first.

Options:defaultpricemonthly_salesmonthly_revenuesales_rankreview_countsales_to_reviewsvariation_countbuy_box_selleryear_saleschild_monthly_revenuechild_monthly_saleschild_sales_year_over_yearchild_sales_changechild_year_salesbuy_box_seller_countrynumber_of_sellerssales_year_over_yearprice_changesales_changenumber_of_imagesweightagenumber_of_videos-price-monthly_sales-monthly_revenue-sales_rank-review_count-sales_to_reviews-variation_count-buy_box_seller-year_sales-child_monthly_revenue-child_monthly_sales-child_sales_year_over_year-child_sales_change-child_year_sales-buy_box_seller_country-number_of_sellers-sales_year_over_year-price_change-sales_change-number_of_images-weight-age-number_of_videosauthorspublished_atpublished_monthlanguagepublisherbook_type-authors-published_at-published_month-language-publisher-book_type

TikTok Hot Videos

search_tiktok_hot_videos
Full Description

Helium 10 TikTok Hot Videos. Searches trending TikTok Shop videos by keyword, category, and time window, returning each video plus the product it promotes, the creator who posted it, and engagement/sales metrics. This is a TikTok Shop tool; not for Amazon research (use the Amazon MCP tools) and not for product/influencer search directly (use search_tiktok_products / search_tiktok_influencers). limit accepts 10-100 rows per call (default 10). At most 500 rows are reachable in total for one query; beyond that the result is truncated (truncation_reason='traversal_bound'). If data.pagination.has_more is true the result is incomplete: call again with cursor = data.pagination.next_cursor, but prefer narrowing filters over paginating through everything. Cursors expire 30 minutes after being issued and are bound to the query that issued them.

Parameters (0 required, 5 optional)
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

cursorstring/null

Opaque pagination cursor from a previous response's pagination.next_cursor. Omit for the first page. Pass it back verbatim with the same query arguments (limit may change between pages); never construct or edit it. Cursors are reusable but expire 30 minutes after being issued (pagination.cursor_expires_at) and are bound to the query that issued them.

filtersobject

Structured trending TikTok Shop video search filters object. Pass an object with the documented fields; do not pass a string.

limitinteger

Number of rows to return, 10-100 (default 10); out-of-range values are rejected. At most 500 rows are reachable in total for one query. When pagination.has_more is true, fetch the next batch with `cursor`. Do NOT probe with a small limit to learn the dataset size — every page carries the same total_count/has_more metadata, so ask for the rows you actually need and read the metadata of that response.

Default: 10
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

TikTok Influencer Finder

search_tiktok_influencers
Full Description

Helium 10 TikTok Influencer Finder. Searches TikTok creators by keyword, category, follower count, age/gender, video/live view and engagement rates, GMV band, units-sold band, and commission-rate band. Just US marketplace. category accepts natural-language text (e.g. "beauty") or a known category_id; it is resolved internally against TikTok's category tree, no separate lookup call needed. Not for: product search (use search_tiktok_products); Amazon-side research (use the Amazon MCP tools). limit accepts 10-100 rows per call (default 10). At most 1000 rows are reachable in total for one query; beyond that the result is truncated (truncation_reason='traversal_bound'). If data.pagination.has_more is true the result is incomplete: call again with cursor = data.pagination.next_cursor, but prefer narrowing filters over paginating through everything. Cursors expire 30 minutes after being issued and are bound to the query that issued them.

Parameters (0 required, 5 optional)
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

cursorstring/null

Opaque pagination cursor from a previous response's pagination.next_cursor. Omit for the first page. Pass it back verbatim with the same query arguments (limit may change between pages); never construct or edit it. Cursors are reusable but expire 30 minutes after being issued (pagination.cursor_expires_at) and are bound to the query that issued them.

filtersobject

Structured TikTok creator search filters object. Pass an object with the documented fields; do not pass a string.

limitinteger

Number of rows to return, 10-100 (default 10); out-of-range values are rejected. At most 1000 rows are reachable in total for one query. When pagination.has_more is true, fetch the next batch with `cursor`. Do NOT probe with a small limit to learn the dataset size — every page carries the same total_count/has_more metadata, so ask for the rows you actually need and read the metadata of that response.

Default: 10
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

TikTok Product Finder

search_tiktok_products
Full Description

Helium 10 TikTok Product Finder. Searches TikTok Shop products by keyword, brand, shop, category, price, rating, shipping, listing recency, units sold, GMV, GMV trend, commission rate, and affiliate/video engagement ranges. This is a TikTok Shop tool, not Amazon — for Amazon product research use search_products (Black Box) instead; the two cover different platforms and are not interchangeable. category accepts natural-language text (e.g. "beauty") or a known category_id; it is resolved internally against TikTok's category tree, no separate lookup call needed. market is currently US only. limit accepts 10-100 rows per call (default 10). At most 500 rows are reachable in total for one query; beyond that the result is truncated (truncation_reason='traversal_bound'). If data.pagination.has_more is true the result is incomplete: call again with cursor = data.pagination.next_cursor, but prefer narrowing filters over paginating through everything. Cursors expire 30 minutes after being issued and are bound to the query that issued them.

Parameters (0 required, 5 optional)
Optional
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

cursorstring/null

Opaque pagination cursor from a previous response's pagination.next_cursor. Omit for the first page. Pass it back verbatim with the same query arguments (limit may change between pages); never construct or edit it. Cursors are reusable but expire 30 minutes after being issued (pagination.cursor_expires_at) and are bound to the query that issued them.

filtersobject

Structured TikTok Shop product search filters object. Pass an object with the documented fields; do not pass a string.

limitinteger

Number of rows to return, 10-100 (default 10); out-of-range values are rejected. At most 500 rows are reachable in total for one query. When pagination.has_more is true, fetch the next batch with `cursor`. Do NOT probe with a small limit to learn the dataset size — every page carries the same total_count/has_more metadata, so ask for the rows you actually need and read the metadata of that response.

Default: 10
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

Sync Listing to Amazon

sync_listing_to_amazon
Full Description

Helium 10 Listing Builder — DESTRUCTIVE: pushes listing content (title / item_highlight / bullets / description) to the user's Amazon Seller Central via SP-API, then verifies it landed — the outcome is reported in sync_status. The only Listing Builder tool that mutates the seller's live data; it requires the user's explicit consent to publish, and merely reviewing or approving the text is NOT consent. No outcome is safe to auto-retry: resubmitting a payload Amazon already accepted writes twice. At least one of title / item_highlight / bullets / description must be present, or the call is rejected.

Parameters (3 required, 7 optional)
Required
asinstring

Amazon ASIN (10-char alphanumeric, case-insensitive). DEFAULTS to the ASIN established in the current session (typically passed to `retrieve_listing_by_asin`). Do not proactively re-ask the user for this value — pass the session ASIN as the default. If the user explicitly says they want to sync this generated listing to a different ASIN, accept the override; the server verifies that whichever ASIN is provided is owned by the caller's linked seller accounts and that it matches the SKU.

marketplacestring

REQUIRED. Marketplace short code (case-sensitive). Confirm the marketplace with the user once, before the first Listing Builder call of the session; every later Listing Builder tool reuses that same value — do NOT ask the user for it again once it is set. When a request_id is supplied, the server rejects any mismatch with that generation's marketplace. Supported values: US, CA, MX, DE, ES, IT, FR, UK, IN, NL, AU, JP, BE, BR.

Options:USCAMXDEESITFRUKINNLAUJPBEBR
skustring

Seller SKU that maps to the ASIN in the seller's catalog.

Optional
bulletsarray

New bullet points (max 10 entries) — replaces the ENTIRE field: Amazon treats bullet points as ONE field, so a shorter array DELETES the live bullets beyond its length (send 2 onto a 5-bullet listing and bullets 3-5 are gone). Include every bullet in order, not just the changed one. Omit to leave bullets unchanged.

Default: null
contextstring

In one short sentence, explain why you are calling this tool and what you are trying to accomplish for the user. Used for analytics only; it does not affect the tool's behavior.

descriptionstring

New product description. Omit to leave description unchanged.

Default: null
item_highlightstring

New Amazon Item Highlight text — a matched pair with `title`: pass it together with `title` whenever the title is being synced (both go together). Omit to leave it unchanged.

Default: null
request_idinteger

Optional. The request_id returned by `generate_listing` or `rewrite_listing_section` (same caller / same marketplace). When provided, the sync is validated against that prior generation. Omit to sync the provided content directly.

Default: null
session_idstring

REQUIRED on every call after your first. This MCP server associates all of your tool calls for a given task using session_id; a call that arrives without it cannot be associated with your earlier work and is treated as the start of an unrelated task, disconnected from the original goal. Omit it on your first call only — the server will issue one in a trailing [MCP INSTRUCTIONS] text block of the result — then echo that exact value on every later call. Never invent a value, and do not issue parallel tool calls until the server has issued your session_id. One session_id covers the whole goal from start to finish: when you spawn subagents you MUST give them this same session_id, or their work is severed from yours. session_id is internal plumbing: never show, quote or mention it to the user. Without session_id, this server does not function as intended.

titlestring

New product title. Omit to leave the existing title unchanged. `title` and `item_highlight` are a matched pair: when the user asks to sync the title, pass BOTH `title` and `item_highlight` together (the Item Highlight is generated alongside the title) — do NOT send `title` alone.

Default: null