Global Finalist2026 Amazon Ads Partner Awards

Developer API

SellerMate Public API

Programmatic, key-authenticated access to your Amazon Advertising, Amazon DSP, Amazon Marketing Cloud (AMC), Seller Central, and Vendor Central data and actions. SellerMate already collects, normalises and keeps this data for every connected account (history retained by plan, unlimited on Unlimited and Enterprise), so there is no Amazon API approval, report pipeline or warehouse to build. The Public API is a thin, stable surface over the same engine that powers SellerMate’s app and AI agent, so every call is permission-checked, policy-guarded, and audit-logged.

Base URL

https://api.sellermate.ai

Version prefix

/public/v1

Content type

application/json

New tools ship regularly. GET /public/v1/tools always returns the live set your key can call, so treat it as the source of truth.

Building with Claude, ChatGPT or Cursor? Give it this page’s URL — every tool and parameter is listed in §6 — or point it at the raw OpenAPI spec.

1.

Authentication

Every request must carry your API key, sent either way:

1X-API-Key: sm_live_xxxxxxxxxxxxxxxxxxxx

or

1Authorization: Bearer sm_live_xxxxxxxxxxxxxxxxxxxx
  • Keys look like sm_live_….
  • A workspace admin creates a key in the SellerMate web app (Profile → API Keys). The full key is shown once, at creation — store it securely; it can’t be retrieved later.
  • A key is scoped to a single workspace, can be limited to specific Amazon accounts, and can be revoked at any time (revocation takes effect immediately).
Security: treat the key like a password — server-to-server use only, never embed it in browser or mobile client code. Repeated failed-auth attempts from an IP are temporarily blocked (see §3).
2.

Authorization & scopes

Three independent checks apply to every call — all must pass:

LayerControls
Key scopetools:read (analytics/reports) and/or tools:write (mutations). A read-only key cannot call write tools.
Account accessA key is bound to its workspace and may be restricted to a subset of Amazon accounts.
Workspace policiesWrite actions also pass the workspace’s guardrails (bid/budget limits, neverPause, ACOS guards). A write that clears them is applied immediately; one that doesn’t returns 422 and is not applied.
3.

Rate limits & errors

Per-key rate limit: default 120 requests/minute. Exceeding it returns 429 with a Retry-After header (seconds) — honor it before retrying.

Failed-auth lockout: repeated invalid-key attempts from one IP are locked out (429 + Retry-After). Don’t retry on a 401 — a bad key won’t start working.

Response shapes

  • Success: the tool’s result object, returned directly (no wrapper).
  • Auth / rate-limit errors: { "status": <code>, "message": "..." }
  • Tool errors: { "error": "..." } (policy violations also include rule, scope, message).

Status codes

CodeMeaning
200Success — body is the tool result.
400Invalid or missing arguments.
401Auth failed — always a generic { "message": "Invalid API key" }.
403Your key's scope doesn't permit this tool, or the account isn't allowed for the key.
404Unknown tool.
422A workspace policy rejected a write (includes rule/scope/message).
429Rate limit exceeded, or too many failed auth attempts. See Retry-After.
500Internal error.
4.

How requests work (read once)

Every tool is invoked the same way: POST /public/v1/tools/{tool_name} with a JSON object of arguments. A few rules apply across all tools, so each tool below only lists what’s unique to it.

  • Account selection. workspace_id is taken from your key automatically. If your key is limited to one Amazon account, amazon_account_id is filled in for you too; if your key spans multiple accounts, pass amazon_account_id to choose one. Call get_user_context to list the accounts (and their accountType: seller / vendor / agency) your key can use. (get_marketplace_summary takes a list, amazon_account_ids, to span accounts.)
  • Dates are YYYY-MM-DD strings (start_date, end_date). Exception: get_sqp_report uses integer month + year.
  • Pagination. Report/list tools return a pagination block — { page, pageSize, total, totalPages, hasMore, nextCursor } — alongside the rows. Pass page (0-indexed, default 0) and page_size (default 100, max 500) to walk pages. summary/totals always cover the full result set, not the page. (Catalog tools use limit/offset instead — noted inline.)
  • Sorting (performance tools): sort_field (a metric) + sort_direction (asc|desc, default desc).
  • Common metrics: cost (spend), attributedSales14d (sales), impressions, clicks, purchases (orders), acos, roas, ctr, cpc, cvr.
  • Authoritative schema: GET /public/v1/tools/{name} returns the live JSON Schema for any tool — the source of truth if this page ever lags the API.
5.

Core endpoints

GET /public/v1/tools

List the tools your key can use (filtered to its scope). Each entry includes the tool’s JSON Schema — handy for discovery and codegen.

1curl -s https://api.sellermate.ai/public/v1/tools -H "X-API-Key: sm_live_..."

GET /public/v1/tools/{name}

Return the JSON Schema for one tool. 404 if unknown or outside your scope.

POST /public/v1/tools/{name}

Invoke a tool. Body = the tool’s arguments. Returns the raw tool result.

1curl -s -X POST https://api.sellermate.ai/public/v1/tools/get_campaign_performance \
2 -H "X-API-Key: sm_live_..." -H "Content-Type: application/json" \
3 -d '{"start_date":"2026-05-01","end_date":"2026-05-31"}'

GET /public/v1/openapi.json

Machine-readable OpenAPI 3.1 spec for the whole API — one documented operation per tool, generated live from the same registry the API serves. No auth required. Import it into Postman or Insomnia, or feed it to a codegen. Rendered as a browsable reference at api.sellermate.ai/public/v1/docs.

6.

Tools reference

The full tool catalog — every tool’s parameters, scope (R tools:read / W tools:write) and description — is listed below, generated from the live API so it always matches what your key can actually call. The interactive reference shows the same catalog with full JSON schemas, sample requests in curl, Python and Node, and a console to try calls against your own key.

Interactive API reference

All tools, grouped by category — Discovery, Campaigns, Targeting, Negatives, Products & Reports, Tags, Amazon DSP, Amazon Marketing Cloud (AMC), Vendor Central, Knowledge Files, Automation & Dayparting, Insights & Alerts — with a built-in console to try calls against your own key.

Open the tools reference
  • Account arguments: workspace_id is never sent (bound to your key); amazon_account_id is auto-filled for single-account keys — see §4.
  • Your key is the filter: GET /public/v1/tools returns exactly the tools your key’s scopes allow — the reference shows the full catalog.
Vendor Central coverage: vendor traffic is glance views only — sessions, page views, and conversion are not available for vendor accounts. Purchase-order data (PO / received / pending) is not available.

All 87 toolsv1.0.0

R tools:read · W tools:write · generated from the live spec

Expand a tool for its description and parameters. Every tool is called the same way — POST /public/v1/tools/{name} with a JSON body — and the account rules in §4 apply to all of them.

Discovery 4 tools

Find your workspaces, Amazon accounts, what SellerMate supports, and which report data has arrived.

Rcheck_data_coverage

Check Data Coverage

POST /public/v1/tools/check_data_coverage · requires tools:read

Which days of Amazon report data have actually arrived, so a day that has not synced yet is not read as zero spend. Pass the accounts as amazon_account_ids. One account (mode: "reports", the default for one id): per feed (campaign, targeting, search-term and advertised-product ads feeds, plus Seller Central and Vendor Central product feeds) a status, the latest date with rows, and datesWithNoRows; use latestDateAllFeedsHaveRows as the end date for any answer that mixes ads and retail (TACoS); notMonitored lists feeds with no coverage evidence here (placements, SQP, SCP, DSP, orders); mode: "reports_daily" adds a row count per date. Several accounts (mode: "summary", the default for several ids, up to 300): each account's last day of campaign, Seller Central and Vendor Central data on its own calendar, plus the day most active accounts have data through. days sets the window (default 17, max 60). Read-only — never triggers a sync.

ParameterTypeDescription
amazon_account_idsrequiredarray of stringThe Amazon account or accounts to check: 1-300 ids of this workspace's accounts. One id: report-by-report status (mode 'reports'). Several ids: one row per account (mode 'summary').
modeenum'reports' (default for one account): every report with its status, latest date and the dates with no rows. 'reports_daily': the same plus 'counts', the row count for every date -- use it to see a gradual decline, which no status or anomaly flag will report. 'summary' (default for several accounts): the last day of each account's top-level reports. 'reports' and 'reports_daily' take one account.One of: summary, reports, reports_daily
daysintegerSize of the window to inspect, counting back from today and including it. Defaults to 17, the same window the in-app sync dialog shows. Min 2, max 60.
Rget_sellermate_capabilities

Get Sellermate Capabilities

POST /public/v1/tools/get_sellermate_capabilities · requires tools:read

What the SellerMate platform supports beyond these API tools, with deep links. Pass an optional query describing what you're trying to do.

ParameterTypeDescription
querystringWhat the user is trying to do, e.g. 'dayparting', 'create campaigns', 'organic vs ads data', 'track competitor rankings'. Used to highlight the most relevant capabilities in the response.
amazon_account_idstringOptional Amazon account ID to build direct deep links. Auto-filled when your API key is restricted to a single Amazon account.
Rget_user_context

Get User Context

POST /public/v1/tools/get_user_context · requires tools:read

Your accessible workspaces and Amazon accounts — each account with id, name, accountType (seller / vendor / agency), country, currency, and marketplace, plus hasDsp (an active Amazon DSP advertiser is linked). Call this first to get the account IDs the other tools need. Pass has_dsp: true to return only DSP-enabled accounts.

ParameterTypeDescription
account_name_searchstringOptional. Case-insensitive substring to filter accounts by name. Use this to resolve a named account (e.g. 'rolex') to its ids.
has_dspbooleanOptional. true returns ONLY accounts with an active Amazon DSP advertiser linked; false returns only those without. Omit for all accounts. Use has_dsp=true to answer 'which of my accounts have DSP?' in one call, then pass those ids to get_dsp_performance.
pageintegerPage number (0-indexed). Defaults to 0.
page_sizeintegerAccounts per page. Defaults to 50. Max 200.
Rresolve_account

Resolve Account

POST /public/v1/tools/resolve_account · requires tools:read

Resolve an Amazon account by name to its workspace_id and amazon_account_id, so account-scoped tools can be called without listing everything via get_user_context.

ParameterTypeDescription
queryrequiredstringAccount name (or part of it) to resolve, e.g. 'Rolex'.

Campaigns 11 tools

Campaign and ad-group inventory, performance, budgets, and creation.

Wadd_products_to_ad_group

Add Products to Ad Group

POST /public/v1/tools/add_products_to_ad_group · requires tools:write

Add up to 50 products (ASIN product ads) to existing ad groups. Each item needs campaign_id, ad_group_id and asin; seller accounts also need sku, vendor accounts advertise by ASIN alone. state defaults to ENABLED. Resolve ASIN / SKU pairs with list_product_catalog.

ParameterTypeDescription
amazon_account_idrequiredstringAmazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
productsrequiredarray of objectProducts to add to existing ad groups.Fields: campaign_id*, ad_group_id*, asin*, sku, state (* required)
_reasoningstringBriefly explain why. Stored for audit.
Wcreate_ad_group

Create Ad Group

POST /public/v1/tools/create_ad_group · requires tools:write

Create one or more ad groups inside an existing Sponsored Products campaign, each with a name, default_bid and at least one product; keywords / product_targets are accepted on MANUAL campaigns only. Names must be unique within the campaign. All-or-nothing: an invalid ad group, or a bid blocked by the workspace bid policy (maxBid / minBid), returns 422 and nothing is submitted to Amazon.

ParameterTypeDescription
amazon_account_idrequiredstringAmazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
campaign_idrequiredstringAmazon campaign ID of the EXISTING campaign to add to (from list_campaigns). Must be Sponsored Products and not archived.
ad_groupsrequiredarray of objectAd groups to create. Each needs a name, a default_bid and at least one product; keywords / product_targets are MANUAL-only.Fields: name*, default_bid*, state, products*, keywords, product_targets, negative_keywords, negative_product_targets (* required)
_reasoningstringBriefly explain why the user wants these ad groups. Stored for audit and shown to admins in the activity log.
Wcreate_campaign

Create Campaign

POST /public/v1/tools/create_campaign · requires tools:write

Create one Sponsored Products campaign (one ad group, one or more products). Asynchronous: returns a session_id — poll get_campaign_creation_status. Subject to workspace campaign-creation policies (budget caps, targeting-type restrictions); a policy-blocked create returns 422 and is not submitted.

ParameterTypeDescription
amazon_account_idrequiredstringAmazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
namerequiredstringCampaign name. Must be unique within the account.
sponsored_typerequiredenumAmazon ad type. Only 'Product' (Sponsored Products) is supported today.One of: Product
targeting_typerequiredenumAUTO lets Amazon pick targets automatically (no keywords or product_targets allowed). MANUAL requires at least one keyword or product target.One of: AUTO, MANUAL
stateenumCampaign state. Defaults to ENABLED.One of: ENABLED, PAUSED
daily_budgetrequirednumberDaily budget (absolute number, in the account's currency). Subject to workspace maxStartingBudget.
start_datestringOptional campaign start date in YYYY-MM-DD format. Omit to start immediately. Must not be in the past.
end_datestringOptional campaign end date in YYYY-MM-DD format. Omit to run with no end date. Must not be before start_date.
ad_groupobjectLegacy single ad group (one ad group only). Prefer ad_groups (array) for one or more ad groups. Sponsored Products campaigns must have at least one ad group with at least one product.Fields: name*, default_bid*, state, products*, keywords, product_targets, negative_keywords, negative_product_targets (* required)
dynamic_biddingobjectOptional Sponsored Products bidding strategy + placement bid adjustments. Shape: {strategy, placementBidding: [{placement, percentage}]}. Provide strategy and/or placementBidding. Omit the whole object to use Amazon's defaults (LEGACY_FOR_SALES, no placement adjustments).Fields: strategy, placementBidding
_reasoningstringBriefly explain why the user wants this campaign created. Stored for audit and shown to admins in the activity log.
confirmbooleanMust be true to queue campaign creation. Omit or set false on the first call to receive a preview (or an incomplete response if required fields are missing). Re-call with confirm=true only after the user explicitly approves the preview, and send the confirmation_token from that preview with it.
confirmation_tokenstringThe confirmation_token returned by the preview call. Required with confirm=true. It is tied to the exact arguments that were previewed, so changing any argument after the preview invalidates it and a new preview is required.
ad_groupsarray of objectOne or more ad groups. Preferred over the legacy single ad_group. Each ad group has its own name, default_bid, products, and (for MANUAL campaigns) keywords/product_targets. Each ad group requires at least one product. Every product needs an ASIN; SKU is required only for seller accounts (vendor accounts advertise by ASIN alone).Fields: name*, default_bid*, state, products*, keywords, product_targets, negative_keywords, negative_product_targets (* required)
Rget_campaign_creation_status

Get Campaign Creation Status

POST /public/v1/tools/get_campaign_creation_status · requires tools:read

Poll an asynchronous create_campaign job by session_id. Returns per-step status and the new campaignId once Amazon assigns it.

ParameterTypeDescription
amazon_account_idrequiredstringAmazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
session_idrequiredstringSession id returned by create_campaign. The session must belong to the same workspace + amazon_account.
Rget_campaign_performance

Get Campaign Performance

POST /public/v1/tools/get_campaign_performance · requires tools:read

Ads metrics per campaign over a date range — spend, sales, ACOS, ROAS, CTR, CPC, orders, CVR — plus a full-set summary. Defaults to ENABLED campaigns; pass campaign_ids or status to include paused/archived. Paginated.

ParameterTypeDescription
amazon_account_idrequiredstringThe Amazon account ID Auto-filled when your API key is restricted to a single Amazon account.
start_daterequiredstringStart date in YYYY-MM-DD format
end_daterequiredstringEnd date in YYYY-MM-DD format
campaign_idsarray of stringOptional campaign IDs. When set, metrics are returned for these IDs regardless of campaign state.
campaign_namestringFilter by campaign name (partial match). Metrics are returned for matching campaigns regardless of state.
statusarray of enumCampaign states to include. Defaults to ENABLED only. Set explicitly when the user asks for paused or archived campaigns.
sponsored_typearray of enumOptional ad-type filter. Pass ["Product"] for Sponsored Products (SP), ["Brand"] for Sponsored Brands (SB), ["Display"] for Sponsored Display (SD). Required whenever the user asks about SP-only, SB-only or SD-only numbers — without it the rows AND the summary totals mix all ad types together.
group_byarray of enumDimensions to group rows by. Defaults to ['campaignName', 'campaignId'] — one row per campaign for the whole date range. Add exactly ONE time dimension for a trend: 'timeWindowStart' (daily), 'week', 'month' or 'year'. The bucket is returned on each row under that same key, and the date range still bounds the query — group_by only decides how rows are split inside it. Drop campaignName/campaignId for an account-level total per bucket (e.g. group_by=['month'] for monthly account spend). Add 'sponsoredType' for an SP/SB/SD split. Ignored when group_by_tag is true. The summary always covers the FULL result set across every bucket, so do not present it as one period's number.
tag_valuesarray of stringOptional legacy tag labels. Only ENABLED campaigns with an active tag assignment are included unless status or campaign_name is specified.
group_by_tagbooleanWhen true, results are one row per tag (rollup metrics by tag). Each row includes tagValue instead of per-campaign breakdown.
sort_fieldenumField to sort results by. Defaults to 'cost'.One of: cost, attributedSales14d, impressions, clicks, purchases, acos, roas, ctr, cpc, cvr
sort_directionenumSort direction. Defaults to 'desc'.One of: asc, desc
page_sizeintegerNumber of results per page. Defaults to 100. Max 500.
pageintegerPage number (0-indexed). Defaults to 0.
Rget_marketplace_summary

Get Marketplace Summary

POST /public/v1/tools/get_marketplace_summary · requires tools:read

Aggregated ads metrics per account across the workspace. Takes amazon_account_ids (list) — defaults to all accounts the key can reach.

ParameterTypeDescription
start_daterequiredstringStart date in YYYY-MM-DD format
end_daterequiredstringEnd date in YYYY-MM-DD format
amazon_account_idsarray of stringOptional list of account IDs. Defaults to all accounts in workspace.
Rget_placement_performance

Get Placement Performance

POST /public/v1/tools/get_placement_performance · requires tools:read

Metrics per placement (Top of Search / Product Page / Rest of Search; SB also Home) per campaign, plus bid-adjustment % and bidding strategy. Set sponsored_type for SP-only or SB-only numbers. Paginated; supports a metrics selector.

ParameterTypeDescription
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
start_daterequiredstringStart date in YYYY-MM-DD format.
end_daterequiredstringEnd date in YYYY-MM-DD format.
group_byarray of enumDimensions to group results by. Defaults to ['campaignId', 'placementClassification', 'sponsoredType'] — one row per campaign x placement x ad type, with metadata (campaign name, bidding strategy, bid adjustments) joined in. Drop campaignId for an account-level summary. Use time fields (week/month) for trend analysis. NEVER include campaignName — campaign names come from metadata enrichment, not grouping.
metricsarray of enumMetrics to fetch. Defaults to the full set. Raw additive metrics are always included internally so that derived metrics stay correct after the SB Home/Homepage alias merge.
campaign_idsarray of stringFilter to specific campaigns by ID.
campaign_namesarray of stringFilter to specific campaigns by name (case-insensitive PARTIAL match, same as get_campaign_performance's campaign_name). Names are resolved to campaign IDs via a CampaignData lookup before the fetch — faster than name-based matching and avoids ambiguity when two campaigns share a name.
sponsored_typearray of enumOptional ad-type filter. Pass ["Product"] for Sponsored Products (SP), ["Brand"] for Sponsored Brands (SB), ["Display"] for Sponsored Display (SD). Required whenever the user is asking about SP-only or SB-only metrics — without it the response (and summary totals) mixes all ad types.
placement_classificationarray of enumFilter to specific placements. Uses this tool's canonical names (Top of Search / Product Page / Home / Rest of Search); they are translated to the smbot internal vocabulary before fetching. Consumer placements only — Amazon Business (B2B) has no value here. Omit this filter to see every placement the account has, including any whose name is not in the list above.
statearray of enumFilter by campaign state.
campaign_targeting_typearray of enumFilter by campaign targeting type (auto vs manual targeting).
sort_fieldenumField to sort results by. Defaults to 'cost'.One of: cost, attributedSales14d, impressions, clicks, purchases, acos, roas, ctr, cpc, cvr
sort_directionenumSort direction. Defaults to 'desc'.One of: asc, desc
page_sizeintegerNumber of results per page. Defaults to 100. Max 500.
pageintegerPage number (0-indexed). Defaults to 0.
Rlist_ad_groups

List Ad Groups

POST /public/v1/tools/list_ad_groups · requires tools:read

Ad-group inventory (no metrics): adGroupId, name, parent campaignId / campaignName, campaignState, state, defaultBid, sponsoredType. This is where every ad-group-scoped write gets its ad_group_id. Defaults to ENABLED — pass state (or ["ALL"]) to widen; filter by campaign_id (recommended: an account-wide call can return thousands), campaign_ids, name_search or sponsored_type. Check campaignState before writing — Amazon rejects writes to ad groups of an archived campaign. Paginated.

ParameterTypeDescription
amazon_account_idrequiredstringAmazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
campaign_idstringFilter to one campaign by its Amazon campaignId (from list_campaigns). Strongly recommended — an account-wide call can return thousands of ad groups.
campaign_idsarray of stringFilter to several campaigns by Amazon campaignId.
name_searchstringSearch ad groups by name (case-insensitive partial match).
statearray of enumFilter by ad group state. Defaults to ENABLED only. Pass ['ALL'] to return every state.
sponsored_typearray of enumFilter by ad type (Sponsored Products, Brands, Display).
page_sizeintegerNumber of results per page. Defaults to 100. Max 500.
pageintegerPage number (0-indexed). Defaults to 0.
Rlist_campaigns

List Campaigns

POST /public/v1/tools/list_campaigns · requires tools:read

Campaign inventory (no performance metrics): name, state, budget, type, targeting type, and budgetUsage — the newest budget-utilisation reading (percent of that day's budget, can exceed 100; asOf; account-local date; isToday). The newest reading is often from an earlier day, so check isToday before treating it as today's usage; null means no reading in the last 14 days. Defaults to ENABLED campaigns — pass status or name_search to widen.

ParameterTypeDescription
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context) Auto-filled when your API key is restricted to a single Amazon account.
statusarray of enumFilter by campaign status. Defaults to ENABLED only. Omit when using name_search to find a campaign regardless of state.
sponsored_typearray of enumFilter by ad type (Sponsored Products, Brands, Display).
name_searchstringSearch campaigns by name (case-insensitive partial match).
page_sizeintegerNumber of results per page. Defaults to 100. Max 500.
pageintegerPage number (0-indexed). Defaults to 0.
Wupdate_ad_group

Update Ad Group

POST /public/v1/tools/update_ad_group · requires tools:write

Update up to 50 ad groups per call: state (ENABLED / PAUSED), default_bid and/or name per ad_group_id from list_ad_groups. Sponsored Products only — Sponsored Brands / Display items are rejected individually while the rest apply. Ad groups are never archived; PAUSED is the stop state. Atomic against workspace policy (neverPause, maxBid / minBid): one blocked field returns 422 and the whole batch is left untouched.

ParameterTypeDescription
amazon_account_idrequiredstringAmazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
updatesrequiredarray of objectPer-ad-group updates. Each needs ad_group_id plus at least one of state/default_bid/name.Fields: ad_group_id*, state, default_bid, name (* required)
_reasoningstringBriefly explain why the user wants this change. Stored for audit.
Wupdate_campaign

Update Campaign

POST /public/v1/tools/update_campaign · requires tools:write

Update up to 50 campaigns per call; each item needs campaign_id plus at least one of state (ENABLED / PAUSED / ARCHIVED), budget (new absolute daily budget, not a delta) or dynamic_bidding (Sponsored Products only: bidding strategy — LEGACY_FOR_SALES, AUTO_FOR_SALES, MANUAL, RULE_BASED — and/or placementBidding: [{placement, percentage}], 0–900, merged into the campaign's existing settings). ARCHIVED is permanent, Sponsored Products only, and must be the only field on its item; it also pauses every ad group in the campaign. Atomic against workspace policy (budget min / max / multiplier, neverPause, neverArchive): one blocked field returns 422 and nothing is sent to Amazon.

ParameterTypeDescription
amazon_account_idrequiredstringAmazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
updatesrequiredarray of objectPer-campaign updates. Each needs campaign_id plus at least one of state/budget/dynamic_bidding.Fields: campaign_id*, state, budget, dynamic_bidding (* required)
_reasoningstringBriefly explain why the user wants this change. Stored for audit.

Targeting 5 tools

Targets (keywords / product / auto): inventory, performance, and bids.

Wadd_targets

Add Targets

POST /public/v1/tools/add_targets · requires tools:write

Add up to 50 keyword or product targets to existing ad groups of MANUAL Sponsored Products campaigns (AUTO campaigns reject explicit targets). Each item needs campaign_id, ad_group_id, an absolute bid, and exactly one of keyword_text + match_type (BROAD / EXACT / PHRASE) or an expression list of {type, value} predicates (e.g. ASIN_SAME_AS, ASIN_CATEGORY_SAME_AS). A duplicate already in the ad group is rejected per item while the rest apply. Atomic against the workspace bid policy (maxBid / minBid): one blocked bid returns 422 and nothing is sent to Amazon.

ParameterTypeDescription
amazon_account_idrequiredstringAmazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
targetsrequiredarray of objectTargets to add to existing ad groups. Each item is either a keyword (keyword_text + match_type) or a product target (expression) — never both.Fields: campaign_id*, ad_group_id*, keyword_text, match_type, expression, bid*, state (* required)
_reasoningstringBriefly explain why. Stored for audit.
Rget_search_term_performance

Get Search Term Performance

POST /public/v1/tools/get_search_term_performance · requires tools:read

Customer search queries that triggered your ads, with their metrics; default grouping is search term. Paginated.

ParameterTypeDescription
amazon_account_idrequiredstringThe Amazon account ID Auto-filled when your API key is restricted to a single Amazon account.
start_daterequiredstringStart date in YYYY-MM-DD format
end_daterequiredstringEnd date in YYYY-MM-DD format
group_byarray of enumDimensions to group results by. Defaults to ['searchTerm']. Include 'targetingValue' to see which target each search term matched. Include 'campaignName' to break down by campaign.
search_termstringFilter by search term — case-insensitive PARTIAL match (e.g. 'yoga' returns 'yoga mat' and 'best yoga block').
campaign_idsarray of stringFilter to specific campaigns by ID.
ad_group_idsarray of stringFilter to specific ad groups by ID.
targeting_typearray of enumFilter by the targeting type that triggered the search term.
sort_fieldenumField to sort results by. Defaults to 'cost'.One of: cost, attributedSales14d, impressions, clicks, purchases, acos, roas, ctr, cpc, cvr
sort_directionenumSort direction. Defaults to 'desc'.One of: asc, desc
page_sizeintegerNumber of results per page. Defaults to 100. Max 500.
pageintegerPage number (0-indexed). Defaults to 0.
tag_valuesarray of stringOptional legacy tag labels. For campaigns, only ENABLED campaigns with an active tag assignment are included unless status or a named campaign is specified.
group_by_tagbooleanWhen true, results are one row per tag (rollup metrics by tag). Each row includes tagValue. include_tags is ignored when true.
include_tagsbooleanWhen true (and group_by_tag is false), each row includes tags loaded from MarketingData after metrics (legacy tag assignments: value, color, bgColor, tagEntityId).
Rget_targeting_performance

Get Targeting Performance

POST /public/v1/tools/get_targeting_performance · requires tools:read

Metrics per target over a date range; default grouping is targeting value + campaign. Filter by campaign/ad-group/type; sortable. Paginated.

ParameterTypeDescription
amazon_account_idrequiredstringThe Amazon account ID Auto-filled when your API key is restricted to a single Amazon account.
start_daterequiredstringStart date in YYYY-MM-DD format
end_daterequiredstringEnd date in YYYY-MM-DD format
group_byarray of enumDimensions to group results by. Defaults to ['targetingValue', 'campaignName']. Use time fields (week, month) for trend analysis. reportType maps to ad type: spTargetingDaily=Sponsored Products, sbTargetingDaily=Sponsored Brands, sdTargetingDaily=Sponsored Display.
campaign_idsarray of stringFilter to specific campaigns by ID.
ad_group_idsarray of stringFilter to specific ad groups by ID.
targeting_typearray of enumFilter by targeting type. Keyword: EXACT/PHRASE/BROAD. Product: ASIN_SAME_AS/ASIN_BRAND_SAME_AS/ASIN_CATEGORY_SAME_AS. Auto: LOOSE_MATCH/CLOSE_MATCH/SUBSTITUTES/COMPLEMENTS.
targeting_valuestringFilter by targeting value (keyword text or ASIN) — case-insensitive PARTIAL match.
sponsored_typearray of enumFilter by ad type.
sort_fieldenumField to sort results by. Defaults to 'cost'.One of: cost, attributedSales14d, impressions, clicks, purchases, acos, roas, ctr, cpc, cvr
sort_directionenumSort direction. Defaults to 'desc'.One of: asc, desc
page_sizeintegerNumber of results per page. Defaults to 100. Max 500.
pageintegerPage number (0-indexed). Defaults to 0.
tag_valuesarray of stringOptional legacy tag labels. For campaigns, only ENABLED campaigns with an active tag assignment are included unless status or a named campaign is specified.
group_by_tagbooleanWhen true, results are one row per tag (rollup metrics by tag). Each row includes tagValue. include_tags is ignored when true.
include_tagsbooleanWhen true (and group_by_tag is false), each row includes tags loaded from MarketingData after metrics (legacy tag assignments: value, color, bgColor, tagEntityId).
Rlist_targets

List Targets

POST /public/v1/tools/list_targets · requires tools:read

Full target inventory (keywords / product / auto): id, current bid, state, match type, keyword text or product expression, parent campaign/ad-group ids, marketplace/country. Returns ALL states by default. No metrics. Paginated.

ParameterTypeDescription
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context) Auto-filled when your API key is restricted to a single Amazon account.
statearray of enumFilter by target state. Omit (or pass ['ALL']) to return targets in ALL states — list_targets is a full inventory call, not performance-bound.
sponsored_typearray of enumFilter by ad type (Sponsored Products/Brands/Display).
campaign_idstringFilter targets to a specific campaign by campaign ID.
ad_group_idstringFilter targets to a specific ad group by ad group ID (from list_ad_groups).
keyword_textstringSearch for targets by keyword text — case-insensitive PARTIAL match against the target's keyword text / targeting value.
start_datestringStart date in YYYY-MM-DD format. Defaults to 30 days ago.
end_datestringEnd date in YYYY-MM-DD format. Defaults to today.
page_sizeintegerNumber of results per page. Defaults to 100. Max 500.
pageintegerPage number (0-indexed). Defaults to 0.
include_tagsbooleanWhen true, each target includes active legacy tags for its targetingValue (loaded from MarketingData).
Wupdate_target

Update Target

POST /public/v1/tools/update_target · requires tools:write

Update up to 50 keyword or product targets per call; each item needs target_id from list_targets plus at least one of bid (absolute, sent to Amazon), state (ENABLED / PAUSED / ARCHIVED — ARCHIVED is permanent) or baseBid. baseBid is SellerMate-only and never sent to Amazon: it is the reference bid that bid dayparting and automation multipliers apply to, and this is the only tool that sets it; an item with only baseBid makes no Amazon change. Atomic against workspace policy (bid multiplier, neverPause, neverArchive): one blocked field returns 422.

ParameterTypeDescription
amazon_account_idrequiredstringAmazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
updatesrequiredarray of objectPer-target updates. Each needs target_id plus at least one of bid/state/baseBid.Fields: target_id*, bid, state, baseBid (* required)
_reasoningstringBriefly explain why. Stored for audit.

Negatives 5 tools

Negative keywords and negative product targets.

Wadd_negative_keywords

Add Negative Keywords

POST /public/v1/tools/add_negative_keywords · requires tools:write

Add up to 50 negative keywords to existing campaigns or ad groups. Each item needs campaign_id, keyword_text and match_type (NEGATIVE_EXACT / NEGATIVE_PHRASE / NEGATIVE_BROAD); include ad_group_id for an ad-group-level negative, omit it for campaign level. state defaults to ENABLED. Atomic: a negation blocked by workspace policy returns 422 and nothing is sent to Amazon.

ParameterTypeDescription
amazon_account_idrequiredstringAmazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
negativesrequiredarray of objectNegative keywords to add. Omit ad_group_id for a campaign-level negative.Fields: campaign_id*, ad_group_id, keyword_text*, match_type*, state (* required)
_reasoningstringBriefly explain why. Stored for audit.
Wadd_negative_product_targets

Add Negative Product Targets

POST /public/v1/tools/add_negative_product_targets · requires tools:write

Add up to 50 negative product targets to existing campaigns or ad groups. Each item needs campaign_id and an expression of {type, value} predicates — ASIN_SAME_AS with the ASIN to negate; brand-level negation is not supported. Include ad_group_id for an ad-group-level negative, omit it for campaign level. Atomic: a negation blocked by workspace policy returns 422 and nothing is sent to Amazon.

ParameterTypeDescription
amazon_account_idrequiredstringAmazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
negativesrequiredarray of objectNegative product targets to add. Omit ad_group_id for campaign-level.Fields: campaign_id*, ad_group_id, expression*, state (* required)
_reasoningstringBriefly explain why. Stored for audit.
Rlist_negative_targets

List Negative Targets

POST /public/v1/tools/list_negative_targets · requires tools:read

Negative-targeting inventory: negative keywords and negative product targets at campaign and ad-group scope — match type, state, keyword text or product expression, parent ids, created/updated dates. No metrics. Paginated.

ParameterTypeDescription
amazon_account_idrequiredstringAmazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
data_typeenumNegative keywords, negative product targets, or all (default).One of: keyword, product, all
scopeenumRestrict to campaign-level or ad-group-level negatives. Defaults to all.One of: campaign, adGroup, all
campaign_idstringFilter to a single campaign by ID.
ad_group_idstringFilter to a single ad group by ID.
statearray of enumFilter by state. Omit (or pass ['ALL']) to return all states.
sponsored_typearray of enumFilter by ad type.
match_typearray of stringFilter by negative match type, e.g. NEGATIVE_EXACT, NEGATIVE_PHRASE (keywords) or ASIN_SAME_AS (product targets).
page_sizeintegerNumber of results per page. Defaults to 100. Max 500.
pageintegerPage number (0-indexed). Defaults to 0.
Wupdate_negative_keyword

Update Negative Keyword

POST /public/v1/tools/update_negative_keyword · requires tools:write

Set the state of up to 50 negative keywords per call: each item is {negative_id, state} with the negative's id from list_negative_targets and state ENABLED / PAUSED / ARCHIVED. Scope, campaign and ad group are derived from the id. ARCHIVED removes the negative permanently.

ParameterTypeDescription
amazon_account_idrequiredstringAmazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
updatesrequiredarray of objectPer-negative keyword state changes.Fields: negative_id*, state* (* required)
_reasoningstringBriefly explain why. Stored for audit.
Wupdate_negative_product_target

Update Negative Product Target

POST /public/v1/tools/update_negative_product_target · requires tools:write

Set the state of up to 50 negative product targets per call: each item is {negative_id, state} with the negative's id from list_negative_targets and state ENABLED / PAUSED / ARCHIVED. Scope, campaign and ad group are derived from the id. ARCHIVED removes the negative permanently.

ParameterTypeDescription
amazon_account_idrequiredstringAmazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
updatesrequiredarray of objectPer-negative product target state changes.Fields: negative_id*, state* (* required)
_reasoningstringBriefly explain why. Stored for audit.

Products & Reports 9 tools

Catalog, inventory, retail + ads performance, and Amazon reports.

Rget_advertised_product_performance

Get Advertised Product Performance

POST /public/v1/tools/get_advertised_product_performance · requires tools:read

Ads-only metrics per advertised ASIN over a date range (only products that received ad impressions). Returns cost (ad spend), attributedSales14d (ad sales), impressions, clicks, and derived ACOS/ROAS/CTR/CPC/CVR. Paginated.

ParameterTypeDescription
amazon_account_idrequiredstringThe Amazon account ID Auto-filled when your API key is restricted to a single Amazon account.
start_daterequiredstringStart date in YYYY-MM-DD format
end_daterequiredstringEnd date in YYYY-MM-DD format
group_byarray of enumDimensions to group results by. Defaults to ['adAsin', 'adProductName']. Use time fields (week, month) for trend analysis. reportType maps to ad type: spAdvertisedDaily=Sponsored Products, sbAdvertisedDaily=Sponsored Brands, sdAdvertisedDaily=Sponsored Display.
ad_asinstringFilter to a specific ASIN.
ad_product_namestringFilter by product name — case-insensitive PARTIAL match.
campaign_idsarray of stringFilter to specific campaigns by ID.
ad_group_idsarray of stringFilter to specific ad groups by ID.
report_typearray of enumFilter by ad type. spAdvertisedDaily=Sponsored Products, sbAdvertisedDaily=Sponsored Brands, sdAdvertisedDaily=Sponsored Display.
sort_fieldenumField to sort results by. Defaults to 'cost'.One of: cost, attributedSales14d, impressions, clicks, purchases, acos, roas, ctr, cpc, cvr
sort_directionenumSort direction. Defaults to 'desc'.One of: asc, desc
page_sizeintegerNumber of results per page. Defaults to 100. Max 500.
pageintegerPage number (0-indexed). Defaults to 0.
tag_valuesarray of stringOptional legacy tag labels. For campaigns, only ENABLED campaigns with an active tag assignment are included unless status or a named campaign is specified.
group_by_tagbooleanWhen true, results are one row per tag (rollup metrics by tag). Each row includes tagValue. include_tags is ignored when true.
include_tagsbooleanWhen true (and group_by_tag is false), each row includes tags loaded from MarketingData after metrics (legacy tag assignments: value, color, bgColor, tagEntityId).
Rget_fba_customer_returns

Get FBA Customer Returns

POST /public/v1/tools/get_fba_customer_returns · requires tools:read

FBA customer returns for a Seller Central account over a date range, per ASIN/SKU, with return reasons and dispositions.

ParameterTypeDescription
start_daterequiredstringStart date (inclusive) in YYYY-MM-DD format, filtered by returnDate.
end_daterequiredstringEnd date (inclusive) in YYYY-MM-DD format, filtered by returnDate.
pageinteger0-indexed page of returns to return. Default 0.
page_sizeintegerReturns per page. Default 100, max 500. Check the response's pagination.hasMore/totalPages and increment page to fetch every return.
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
Rget_inventory

Get Inventory

POST /public/v1/tools/get_inventory · requires tools:read

Per-ASIN stock: FBM quantity (fbm.quantity) and FBA warehouse balance (fba.endingWarehouseBalance, from the daily FBA Inventory Ledger). A null fbm or fba block means not applicable or no data, not zero (FBA SKUs have fbm: null). Amazon's fulfillable / inbound / reserved / unfulfillable figures are not available. Requires Seller Central. Uses limit/offset.

ParameterTypeDescription
amazon_account_idrequiredstringAmazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
asinsarray of stringFilter to specific ASINs.
viewenummerged (default; use for stock and days-of-cover): one row per ASIN with both FBM and FBA blocks. fbm: merchant-fulfilled rows only, excludes FBA stock (FBA SKUs get fbm: null). fba: FBA-only rows. fba_by_location: FBA-only rows broken out per Amazon fulfillment center (FC) — each ASIN carries a fba.byLocation array with the warehouse balance at each location, plus the rolled-up network total.One of: merged, fbm, fba, fba_by_location
offsetintegerPagination offset. Defaults to 0.
limitintegerPagination limit. Defaults to 50. Hard cap at 200.
Rget_orders_report

Get Orders Report

POST /public/v1/tools/get_orders_report · requires tools:read

Orders for a date range: aggregate totals plus a breakdown by state; raw order rows only when include_orders is set.

ParameterTypeDescription
amazon_account_idrequiredstringAmazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
start_daterequiredstringStart date in YYYY-MM-DD format.
end_daterequiredstringEnd date in YYYY-MM-DD format.
marketplace_idsarray of stringOptional marketplace IDs list.
include_ordersbooleanIf true, include the full raw per-order rows, paginated via page/page_size. Defaults to false — only aggregates are returned. Combine with state to drill into one state.
pageinteger0-indexed page of orders to return when include_orders=true. Default 0.
page_sizeintegerOrders per page when include_orders=true. Default 100, max 500. Check the response's pagination.hasMore/pagination.totalPages and increment page to fetch every order.
top_statesintegerReturn only the top N state groups (by total value) in the aggregate SUMMARY breakdown; the remainder is summarized as a single 'otherStates' bucket. Does NOT limit the raw orders list (that covers every state, subject to state and pagination). Default 25, max 100.
statestringOptional case-insensitive state filter, applied to both the summary breakdown and the raw orders list. Matches state labels containing this value (e.g. 'maharashtra').
Rget_retail_product_performance

Get Retail Product Performance

POST /public/v1/tools/get_retail_product_performance · requires tools:read

Combined retail + ads metrics per ASIN — total revenue, sessions, page views, buy-box %, TACoS, organic vs ads split. Requires a Seller Central (SP-API) connection; supports child/parent ASIN rollup.

ParameterTypeDescription
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context) Auto-filled when your API key is restricted to a single Amazon account.
start_daterequiredstringStart date in YYYY-MM-DD format
end_daterequiredstringEnd date in YYYY-MM-DD format
listing_typeenumProduct listing level. 'child_asin' (default) shows individual product variations. 'parent_asin' shows parent-level rollup across all variations.One of: child_asin, parent_asin
asinstringFilter to a specific ASIN.
item_namestringFilter by product name.
sort_fieldenumField to sort results by. Defaults to 'totalSales'.One of: totalSales, pageViews, sessions, unitsOrdered, buyBoxPercentage, cost, attributedSales14d, impressions, clicks, purchases, acos, roas, tacos
sort_directionenumSort direction. Defaults to 'desc'.One of: asc, desc
page_sizeintegerNumber of results per page. Defaults to 100. Max 500.
pageintegerPage number (0-indexed). Defaults to 0.
Rget_scp_report

Get SCP Report

POST /public/v1/tools/get_scp_report · requires tools:read

Amazon Brand Analytics Search Catalog Performance — one row per ASIN per month (no search-query dimension), with nested impression / click / cart-add / purchase metrics (counts, rates, median prices, shipping-speed breakdowns, search-traffic sales) plus product title and image. Takes integer month + year; asin narrows to one product. Sorted by impressionCount by default (sort_field / sort_direction). Paginated (page_size 50, max 200).

ParameterTypeDescription
amazon_account_idrequiredstringAmazon account ID (from get_user_context) Auto-filled when your API key is restricted to a single Amazon account.
monthrequiredintegerCalendar month (1-12)
yearrequiredintegerFour-digit year
asinstringOptional ASIN filter (exact match).
pageintegerPage number (0-indexed). Defaults to 0.
page_sizeintegerRows per page. Defaults to 50, max 200. Keep small — responses over ~1 MB can be rejected by the MCP client.
sort_fieldstringField to sort by. Defaults to 'impressionCount'. Common alternatives: 'clickCount', 'cartAddCount', 'purchaseCount', 'clickRate', 'conversionRate', 'asin'.
sort_directionenumSort direction. Defaults to 'desc'.One of: asc, desc
Rget_sqp_report

Get SQP Report

POST /public/v1/tools/get_sqp_report · requires tools:read

Amazon Search Query Performance — one row per (ASIN, query). Uses integer month + year, not a date range. Paginated.

ParameterTypeDescription
amazon_account_idrequiredstringAmazon account ID (from get_user_context) Auto-filled when your API key is restricted to a single Amazon account.
monthrequiredintegerCalendar month (1-12)
yearrequiredintegerFour-digit year
asinstringOptional ASIN filter (exact match).
search_querystringOptional search query filter (exact match).
pageintegerPage number (0-indexed). Defaults to 0.
page_sizeintegerRows per page. Defaults to 50, max 200. Keep small — responses over ~1 MB can be rejected by the MCP client.
sort_fieldstringField to sort by. Defaults to 'searchQueryData.searchQueryScore'. Common alternatives: 'searchQueryData.searchQueryVolume', 'asin'.
sort_directionenumSort direction. Defaults to 'desc'.One of: asc, desc
Rlist_product_catalog

List Product Catalog

POST /public/v1/tools/list_product_catalog · requires tools:read

Seller product catalog (ASIN + SKU, name, image, price, fulfillment channel, status, FBM quantity). Optionally pass a date range to add retail and ad metrics per product. Requires Seller Central. Uses limit/offset.

ParameterTypeDescription
amazon_account_idrequiredstringAmazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
asinsarray of stringFilter to specific ASINs.
skusarray of stringFilter to specific SKUs.
name_searchstringCase-insensitive substring match against the item name.
fulfillment_channelenumFilter by fulfillment. FBA = Amazon-fulfilled (channel starts with AMAZON_), FBM = merchant-fulfilled (channel = DEFAULT). Defaults to ALL.One of: FBA, FBM, ALL
include_suppressedbooleanWhen false (default), products whose status list includes 'SUPPRESSED' or 'INACTIVE' are filtered out.
start_datestringStart date in YYYY-MM-DD format. Presence of this field switches the tool to Mode 2 (catalog + performance). end_date is required when start_date is set.
end_datestringEnd date in YYYY-MM-DD format. Required iff start_date is set; must be on or after start_date.
include_retail_metricsbooleanMode 2 only. Default true. When true, each row carries a retail block with sessions, pageViews, unitsOrdered, totalRevenue, conversionRate, buyBoxPercentage.
include_ads_metricsbooleanMode 2 only. Default false. When true, each row carries an ads block with spend, attributedSales14d, ACOS, ROAS, orders, impressions, clicks.
unadvertised_onlybooleanMode 2 only. When true, only products with zero ad spend in the date range are returned — i.e. candidates for create_campaign. Forces include_ads_metrics=true.
min_total_revenuenumberMode 2 only. Filter to products whose retail revenue in the date range is >= this value.
max_acosnumberMode 2 only. Filter to products whose advertising ACOS in the date range is <= this value (percent, e.g. 30 for 30%). Skips products with no ad spend.
sort_byobjectSort key. Mode 1 defaults to itemName asc. Mode 2 defaults to totalRevenue desc.Fields: field*, direction (* required)
offsetintegerPagination offset. Defaults to 0.
limitintegerPagination limit. Defaults to 50. Hard cap at 200.
Wupdate_product_ad

Update Product Ad

POST /public/v1/tools/update_product_ad · requires tools:write

Set the state of up to 50 product ads per call: each item needs campaign_id, ad_group_id, the asin (or ad_id) and state ENABLED / PAUSED / ARCHIVED. ARCHIVED removes the product ad and is permanent — PAUSED stops advertising a product reversibly.

ParameterTypeDescription
amazon_account_idrequiredstringAmazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
updatesrequiredarray of objectPer-product-ad state changes.Fields: campaign_id*, ad_group_id*, asin, ad_id, state* (* required)
_reasoningstringBriefly explain why. Stored for audit.

Tags 4 tools

Tags on campaigns, products, targets, and search terms: inventory, create, update, delete.

Wcreate_tag

Create Tag

POST /public/v1/tools/create_tag · requires tools:write

Create a tag label and assign it to entities of one data_type (campaign IDs, ASINs, target / keyword texts, or search terms). Pass tag_value + entities, or assignments for several labels in one call. An existing label is reused, not duplicated; color / bg_color apply to new labels only. Omit tag_group for legacy free-form tags (an entity may carry many). Pass tag_group (e.g. Brand) for grouped tags: a group is a column holding exactly one value per entity, so assigning a new value archives the entity's previous one; a missing group is created unless create_tag_group_if_missing is false.

ParameterTypeDescription
amazon_account_idrequiredstringThe Amazon account ID Auto-filled when your API key is restricted to a single Amazon account.
data_typerequiredenumWhat the entities are: campaign (campaignId), product (ASIN), targeting (keyword/target text), or search_term.One of: campaign, product, targeting, search_term
tag_valuestringThe tag label, max 60 characters. Letters, numbers, spaces and _ - . @ # & ! + / , * $ ^ ( ) ~ = { } [ ] | only. Use with 'entities' for the common single-label case.
entitiesarray of stringEntity ids to tag, matching data_type: campaignId for campaign, ASIN for product, the target/keyword text for targeting, the search term for search_term. ASINs are uppercased automatically.
assignmentsarray of objectBatch form: apply several different labels in one call. Each item is {tag_value, entities, color?, bg_color?}. Use this INSTEAD of tag_value/entities, not alongside them.Fields: tag_value*, entities*, color, bg_color (* required)
colorstringOptional hex text color for a NEW tag label. Ignored when the label already exists. Auto-picked from the SellerMate palette when omitted.
bg_colorstringOptional hex background color for a NEW tag label. Ignored when the label already exists. Auto-picked when omitted.
create_tag_group_if_missingbooleanWhen true (default) a tag_group title that does not exist yet is created for this data_type. Set false to fail instead.
tag_groupstringNEW-tag group (column) title, e.g. 'Brand' or 'Product Line'. Omit for OLD/legacy tags. Within a group an entity holds exactly one value — assigning another value archives the previous one.
tag_group_idstringNEW-tag group id, if known. Alternative to tag_group; takes precedence when both are supplied.
Wdelete_tag

Delete Tag

POST /public/v1/tools/delete_tag · requires tools:write

Soft-delete (archive) tags; nothing is destroyed. scope: "assignment" (default) untags the given entities (or tag_entity_ids) but keeps the label; "tag" archives a label and every assignment of it; "tag_group" archives a whole group and its values while the underlying labels survive. Archived rows disappear from get_tags and tag filters.

ParameterTypeDescription
amazon_account_idrequiredstringThe Amazon account ID Auto-filled when your API key is restricted to a single Amazon account.
scopeenum'assignment' (default) untags specific entities; 'tag' archives a tag label everywhere; 'tag_group' archives a NEW-tag group.One of: assignment, tag, tag_group
data_typeenumEntity type. Required for scope='assignment' when identifying entities, and for scope='tag_group' when identifying the group by title. Optional for scope='tag' to limit the removal to one entity type.One of: campaign, product, targeting, search_term
tag_idstringThe tag id from get_tags.
tag_valuestringThe tag's label, if tag_id is unknown.
entitiesarray of stringscope='assignment': entity ids to untag (campaignId / ASIN / target text / search term). Combine with tag_id or tag_value.
tag_entity_idsarray of stringscope='assignment': archive these tag assignments directly by their tagEntityId from get_tags. Use instead of tag_value + entities when you already have the ids.
tag_groupstringNEW-tag group (column) title, e.g. 'Brand' or 'Product Line'. Omit for OLD/legacy tags. Within a group an entity holds exactly one value — assigning another value archives the previous one.
tag_group_idstringNEW-tag group id, if known. Alternative to tag_group; takes precedence when both are supplied.
Rget_tags

Get Tags

POST /public/v1/tools/get_tags · requires tools:read

Tag inventory for one entity type (campaign / product / targeting / search_term): labels, colors, assigned entities (tagEntityId), optional per-tag metrics. Lists legacy free-form tags only — tag groups and their values are not included.

ParameterTypeDescription
amazon_account_idrequiredstringThe Amazon account ID Auto-filled when your API key is restricted to a single Amazon account.
data_typerequiredenumEntity type tags apply to: campaign, product (ASIN), targeting (keyword/target), or search_term.One of: campaign, product, targeting, search_term
include_entitiesbooleanWhen true (default), each tag includes the list of assigned entity ids (campaignId, ASIN, targetingValue, or searchTerm depending on data_type).
include_metricsbooleanWhen true, include aggregated ads metrics per tag for the date range. Requires start_date and end_date. Campaign metrics match getCampaignTags; other types use report rollups by tag.
start_datestringStart date YYYY-MM-DD (required if include_metrics is true)
end_datestringEnd date YYYY-MM-DD (required if include_metrics is true)
tag_labelsarray of stringOptional: only return tags whose value matches one of these labels.
Wupdate_tag

Update Tag

POST /public/v1/tools/update_tag · requires tools:write

Rename or restyle a tag (target: "tag", the default): new_tag_value renames it everywhere it is assigned, color / bg_color restyle it. target: "tag_group" renames a tag group via new_title (give data_type when identifying the group by title). Does not change which entities carry the tag — use create_tag / delete_tag for that.

ParameterTypeDescription
amazon_account_idrequiredstringThe Amazon account ID Auto-filled when your API key is restricted to a single Amazon account.
targetenum'tag' (default) edits a tag label; 'tag_group' renames a NEW-tag group/column.One of: tag, tag_group
tag_idstringtarget='tag': the tag id from get_tags. Preferred over tag_value.
tag_valuestringtarget='tag': the tag's current label, if tag_id is unknown.
new_tag_valuestringtarget='tag': new label, max 60 characters. Renames the tag everywhere it is currently assigned.
colorstringtarget='tag': new hex text color, e.g. '#FFFFFF'.
bg_colorstringtarget='tag': new hex background color, e.g. '#0037EB'.
new_titlestringtarget='tag_group': the group's new title.
data_typeenumtarget='tag_group': the group's entity type. Needed to disambiguate when identifying the group by title.One of: campaign, product, targeting, search_term
tag_groupstringNEW-tag group (column) title, e.g. 'Brand' or 'Product Line'. Omit for OLD/legacy tags. Within a group an entity holds exactly one value — assigning another value archives the previous one.
tag_group_idstringNEW-tag group id, if known. Alternative to tag_group; takes precedence when both are supplied.

Amazon DSP 2 tools

Amazon DSP (programmatic display/video) campaigns and reports.

Rget_dsp_performance

Get DSP Performance

POST /public/v1/tools/get_dsp_performance · requires tools:read

Amazon DSP performance over a date range — five reports behind one report enum (campaign / product / inventory / geo / audience), with group_by and metrics chosen per report. Separate from Sponsored Products data; do not combine the two. Paginated.

ParameterTypeDescription
amazon_account_idrequiredstringAmazon account ID (from get_user_context) Auto-filled when your API key is restricted to a single Amazon account.
reportrequiredenumWhich DSP report to run. 'campaign' for spend/sales/ROAS by campaign, 'product' for per-ASIN conversions, 'inventory' for placement/creative, 'geo' for geography, 'audience' for segments.One of: audience, campaign, geo, inventory, product
start_daterequiredstringStart date, YYYY-MM-DD (inclusive).
end_daterequiredstringEnd date, YYYY-MM-DD (inclusive).
group_byarray of enumDimensions to break results out by. Valid values depend on report — this enum is the union across all five. Every report also accepts the time buckets 'timeWindowStart' (daily), 'week', 'month' and 'year'. Omit for the per-report default. Each extra dimension multiplies the row count, so add them one at a time.
metricsarray of enumMetric columns to return. Valid values depend on report — this enum is the union across all five. Omit for a sensible default set.
order_idsarray of stringOptional DSP order (campaign) IDs to restrict to. Resolve names to IDs with list_dsp_campaigns.
asinsarray of stringOptional ASIN filter. Only applies to report='product' — the other collections carry no ASIN field.
pageintegerPage number (0-indexed). Defaults to 0.
page_sizeintegerRows per page. Defaults to 50, max 200. Keep it small — responses over ~1 MB can be rejected by the MCP client.
sort_fieldstringMetric or dimension to sort by (must be valid for this report). Defaults to totalCost, or sales for report='product' (that collection has no cost field).
sort_directionenumSort direction. Defaults to 'desc'.One of: asc, desc
Rlist_dsp_campaigns

List DSP Campaigns

POST /public/v1/tools/list_dsp_campaigns · requires tools:read

DSP campaigns (orders) for an account: order_id, name, state, delivery status and flight dates. Metadata only — resolve a campaign name to the order_id that get_dsp_performance filters on.

ParameterTypeDescription
amazon_account_idrequiredstringAmazon account ID (from get_user_context) Auto-filled when your API key is restricted to a single Amazon account.
name_searchstringFilter by campaign name (case-insensitive partial match).
statearray of stringFilter by campaign state as stored by Amazon (e.g. ACTIVE, PAUSED, ARCHIVED). Omit to return every state.
delivery_statusarray of stringFilter by Amazon delivery status (e.g. DELIVERING, NOT_DELIVERING). Omit to return every status.
order_idsarray of stringOptional exact DSP order (campaign) IDs to look up.
pageintegerPage number (0-indexed). Defaults to 0.
page_sizeintegerCampaigns per page. Defaults to 50, max 200.

Amazon Marketing Cloud 10 tools

AMC instances, audiences (templates, size estimates, creation), and AMC reports.

Wcreate_amc_audience

Create AMC Audience

POST /public/v1/tools/create_amc_audience · requires tools:write

Create a rule-based (default) or lookalike AMC audience on the account's instance. Source: a template_id with its inputs, a query_payload, or raw query SQL. activation is SPONSORED_ADS (default) or DSP (fails if the instance has no DSP advertiser). days sets the lookback (default: the template's, or 90); refresh_rate_days 0–21 (7–21 for a lookalike; default 21); a lookalike also needs lookalike_expected_reach. Run estimate_amc_audience_size first when in doubt, or pass dry_run: true to get the resolved plan and SQL without creating anything. Amazon builds the audience asynchronously — follow up with list_amc_audiences.

ParameterTypeDescription
amazon_account_idrequiredstringAmazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
namerequiredstringAudience name (1–100 characters).
descriptionstringOptional description (defaults to the template's).
instance_idstringAMC instanceId (from get_amc_report_options). Defaults to the account's default instance.
template_idstringA recipe from get_amc_audience_templates. Give its inputs below when it needs them.
search_termsstring | array of stringFor a search-term recipe: the customer search terms (list or comma-separated).
asinsstring | array of stringFor an ASIN-scoped recipe: the ASINs of the first row (list or comma-separated).
asins_bstring | array of stringCross-sell only: the ASINs of the second (excluded) row.
valuenumberFor a recipe with an open threshold (high-value buyers): the order value.
query_payloadobjectInstead of a template: a rule-builder payload {conditions:[...], connectors:[...]} as the AMC audience agent produces.
querystringInstead of a template or payload: raw AMC audience SQL on the *_for_audiences tables.
daysintegerLookback window in days ending today (default: the template's, or 90).
audience_typeenumWhich minimum to grade against (default RULE_BASED: 2,000 users; LOOKALIKE seed: 500 to 500,000).One of: RULE_BASED, LOOKALIKE
time_window_startstringOptional explicit window start (ISO 8601 UTC) instead of days.
time_window_endstringOptional explicit window end (ISO 8601 UTC) instead of days.
time_window_relativebooleanSlide the window forward on each refresh (default true).
refresh_rate_daysintegerHow often Amazon rebuilds it: 0–21 days (7–21 for a lookalike). Default 21.
lookalike_expected_reachenumLookalike only: how far from the seed to reach.One of: MOST_SIMILAR, SIMILAR, BALANCED, BROAD, MOST_BROAD
activationenumWhere the audience is activated (default SPONSORED_ADS).One of: SPONSORED_ADS, DSP
dry_runbooleantrue = return the resolved plan and SQL without creating anything.
Restimate_amc_audience_size

Estimate AMC Audience Size

POST /public/v1/tools/estimate_amc_audience_size · requires tools:read

Count how many shoppers an audience definition would contain before creating it. Amazon rejects a rule-based audience under 2,000 users (2,500 recommended) and a lookalike seed outside 500–500,000, and only says so after building it. Give a template_id (plus its inputs), a query_payload, or raw query SQL, with optional days and audience_type. Returns an estimateId immediately; AMC takes one to five minutes, so poll get_amc_audience_size_estimate. Nothing is created.

ParameterTypeDescription
amazon_account_idrequiredstringAmazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
instance_idstringAMC instanceId (from get_amc_report_options). Defaults to the account's default instance.
template_idstringA recipe from get_amc_audience_templates. Give its inputs below when it needs them.
search_termsstring | array of stringFor a search-term recipe: the customer search terms (list or comma-separated).
asinsstring | array of stringFor an ASIN-scoped recipe: the ASINs of the first row (list or comma-separated).
asins_bstring | array of stringCross-sell only: the ASINs of the second (excluded) row.
valuenumberFor a recipe with an open threshold (high-value buyers): the order value.
query_payloadobjectInstead of a template: a rule-builder payload {conditions:[...], connectors:[...]} as the AMC audience agent produces.
querystringInstead of a template or payload: raw AMC audience SQL on the *_for_audiences tables.
daysintegerLookback window in days ending today (default: the template's, or 90).
audience_typeenumWhich minimum to grade against (default RULE_BASED: 2,000 users; LOOKALIKE seed: 500 to 500,000).One of: RULE_BASED, LOOKALIKE
Rget_amc_audience_size_estimate

Get AMC Audience Size Estimate

POST /public/v1/tools/get_amc_audience_size_estimate · requires tools:read

Poll an estimate by estimate_id. Returns status (PENDING / RUNNING / SUCCEEDED / FAILED), audienceSize, suppressed (true when AMC withheld the number because the audience is under roughly 100 shoppers — not zero), a verdict (ok / borderline / too_small / too_large) with the thresholds it was graded against, and sizeText. Poll about once a minute until the status is terminal.

ParameterTypeDescription
amazon_account_idrequiredstringAmazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
estimate_idrequiredstringThe estimateId returned by estimate_amc_audience_size.
instance_idstringThe instanceId the estimate was started on (defaults to the account's default instance).
Rget_amc_audience_templates

Get AMC Audience Templates

POST /public/v1/tools/get_amc_audience_templates · requires tools:read

SellerMate's library of ready-made AMC audience recipes (cart abandoners, repeat viewers, high-value / new-to-brand / lapsed buyers, cross-sell, ad-fatigued non-clickers, …). Each entry gives a templateId, what it selects, its default lookback window, the inputs it still needs (search_terms, asins, value), whether it suits a lookalike seed, and where it can be activated. Filter with group or fetch one by template_id; include_payload adds each recipe's rule payload. Needs no account id.

ParameterTypeDescription
template_idstringOne recipe by id (returns its rule payload too).
groupenumOnly this group.One of: Retarget, Loyalty & growth, Exclusion
include_payloadbooleanInclude each recipe's rule payload (default false).
Rget_amc_custom_attribution

Get AMC Custom Attribution

POST /public/v1/tools/get_amc_custom_attribution · requires tools:read

AMC Custom Attribution report: per-campaign conversions under a chosen attribution model, selected with granularity (LAST_TOUCH default, FIRST_TOUCH, LINEAR, POSITION). Metrics include impressions, clicks, user_reach, users_that_converted, conversions, conversion_rate, total_units_sold and total_product_sales, plus a pinned Total row. month is YYYY-MM from get_amc_report_options (default: latest available). Sortable, filterable via filter_model; page is 1-based (page_size 100, max 500).

ParameterTypeDescription
amazon_account_idrequiredstringAmazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
instance_idstringAMC instanceId (from get_amc_report_options). Defaults to the account's default instance.
monthstringReport month as YYYY-MM (from get_amc_report_options). Defaults to the latest available month.
granularityenumAttribution MODEL (this report's granularity slot). LAST_TOUCH is the default.One of: LAST_TOUCH, FIRST_TOUCH, LINEAR, POSITION
sort_bystringField to sort by. Defaults to the report's default sort.
sort_orderenumSort direction. Defaults to 'desc'.One of: asc, desc
pageinteger1-based page number. Defaults to 1 — increment to page through all rows (see the response's pagination block).
page_sizeintegerRows per page. Defaults to 100, max 500. Keep small for MCP transport limits.
filter_modelobjectOptional MUI-DataGrid filter model {items:[{field,operator,value}], logicOperator:'and'|'or'}. Only the report's whitelisted columns are applied.
Rget_amc_path_to_conversion

Get AMC Path to Conversion

POST /public/v1/tools/get_amc_path_to_conversion · requires tools:read

AMC Path to Conversion report: the ad-exposure paths shoppers took before purchasing, one row per path, grouped by granularity (AD_TYPE default or CAMPAIGN). Metrics include path_occurrences, impressions, imp_total_cost, users_that_purchased, sales_amount, purchases, user_purchase_rate and new-to-brand (ntb_*) columns, plus a pinned Total row. month is YYYY-MM (default: latest available). page is 1-based (page_size 100, max 500).

ParameterTypeDescription
amazon_account_idrequiredstringAmazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
instance_idstringAMC instanceId (from get_amc_report_options). Defaults to the account's default instance.
monthstringReport month as YYYY-MM (from get_amc_report_options). Defaults to the latest available month.
granularityenumPath grouping. AD_TYPE (default) groups paths by ad type; CAMPAIGN groups by campaign.One of: AD_TYPE, CAMPAIGN
sort_bystringField to sort by. Defaults to the report's default sort.
sort_orderenumSort direction. Defaults to 'desc'.One of: asc, desc
pageinteger1-based page number. Defaults to 1 — increment to page through all rows (see the response's pagination block).
page_sizeintegerRows per page. Defaults to 100, max 500. Keep small for MCP transport limits.
filter_modelobjectOptional MUI-DataGrid filter model {items:[{field,operator,value}], logicOperator:'and'|'or'}. Only the report's whitelisted columns are applied.
Rget_amc_report_options

Get AMC Report Options

POST /public/v1/tools/get_amc_report_options · requires tools:read

The account's AMC setup — call this before any other AMC tool. Returns the linked AMC instances (instanceId, instanceName, which one is the default), the available months (YYYY-MM, newest first) for each monthly report (path to conversion, time to conversion, custom attribution), and the tentpole events (eventId, name, status) the overlap report needs. An empty instances list means no AMC instance is linked.

ParameterTypeDescription
amazon_account_idrequiredstringAmazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
instance_idstringOptional AMC instanceId to scope the available months/events to. Defaults to the account's default instance.
Rget_amc_tentpole_overlap

Get AMC Tentpole Overlap

POST /public/v1/tools/get_amc_tentpole_overlap · requires tools:read

AMC Tentpole Phase Overlap results for one tentpole event: strategy-path performance across the event's phases, one row per path. Requires event_id from get_amc_report_options. Metrics include impressions, unique_viewers, unique_purchasers, dpv, sales, ntb_sales, ad_spend, roas and rate columns; default sort is sales. page is 1-based (page_size 100, max 500).

ParameterTypeDescription
amazon_account_idrequiredstringAmazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
event_idrequiredstringTentpole event id (from get_amc_report_options → tentpole_events).
instance_idstringAMC instanceId (from get_amc_report_options). Defaults to the account's default instance.
sort_bystringField to sort by. Defaults to 'sales'. Common: sales, roas, ad_spend, impressions, unique_purchasers.
sort_orderenumSort direction. Defaults to 'desc'.One of: asc, desc
pageinteger1-based page number. Defaults to 1 — increment to page through all rows.
page_sizeintegerRows per page. Defaults to 100, max 500. Keep small for MCP transport limits.
Rget_amc_time_to_conversion

Get AMC Time to Conversion

POST /public/v1/tools/get_amc_time_to_conversion · requires tools:read

AMC Time to Conversion report: how long after ad exposure shoppers converted, as a latency distribution with one row per group × time bucket, grouped by granularity (AD_TYPE default or CAMPAIGN). Metrics include purchases, total_brand_purchases, avg_time_to_conversion_hours and avg_time_to_conversion_per_group, plus a pinned Total row. month is YYYY-MM (default: latest available). page is 1-based (page_size 100, max 500).

ParameterTypeDescription
amazon_account_idrequiredstringAmazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
instance_idstringAMC instanceId (from get_amc_report_options). Defaults to the account's default instance.
monthstringReport month as YYYY-MM (from get_amc_report_options). Defaults to the latest available month.
granularityenumGrouping of the latency distribution. AD_TYPE (default) groups by ad type; CAMPAIGN groups by campaign.One of: AD_TYPE, CAMPAIGN
sort_bystringField to sort by. Defaults to the report's default sort.
sort_orderenumSort direction. Defaults to 'desc'.One of: asc, desc
pageinteger1-based page number. Defaults to 1 — increment to page through all rows (see the response's pagination block).
page_sizeintegerRows per page. Defaults to 100, max 500. Keep small for MCP transport limits.
filter_modelobjectOptional MUI-DataGrid filter model {items:[{field,operator,value}], logicOperator:'and'|'or'}. Only the report's whitelisted columns are applied.
Rlist_amc_audiences

List AMC Audiences

POST /public/v1/tools/list_amc_audiences · requires tools:read

The audiences built on one AMC instance (rule-based and lookalike): name, description, type, status (SUCCEEDED = usable; FAILED with Amazon's statusReason, usually the 2,000-user minimum; PENDING / RUNNING = still building), audienceCount, activation (Sponsored Ads or DSP), the Amazon audience id used for targeting, time window, refresh rate and SQL. Filters (AND-ed): status, audience_type, name_query, audience_ids. instance_id defaults to the account's default instance. Paginated — page is 1-based here (page_size 50, max 200).

ParameterTypeDescription
amazon_account_idrequiredstringAmazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
instance_idstringAMC instanceId (from get_amc_report_options). Defaults to the account's default instance.
statusstring | array of stringOnly these statuses: SUCCEEDED, FAILED, PENDING, RUNNING. A list or a comma-separated string.
audience_typestring | array of stringOnly this type: RULE_BASED or LOOKALIKE. A list or a comma-separated string.
name_querystringCase-insensitive substring to match against the audience name or description.
audience_idsstring | array of stringExact audienceId or audienceExecutionId values, from a mention or an earlier result.
pageinteger1-based page (default 1).
page_sizeintegerRows per page (default 50, max 200).

Vendor Central 3 tools

Vendor Central sales, inventory, and catalog (vendor accounts).

Rget_vendor_inventory

Get Vendor Inventory

POST /public/v1/tools/get_vendor_inventory · requires tools:read

Vendor Central on-hand inventory per ASIN: sellable (available) and unsellable units, with product name/image. Choose the sourcing (default) or manufacturing view. Returns {connected: false} with a connect URL if the account has no Vendor Central connection. Paginated.

ParameterTypeDescription
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
inventory_typeenumVendor inventory view. Defaults to 'sourcing'.One of: sourcing, manufacturing
asinsarray of stringOptional: filter to specific ASINs.
page_sizeintegerNumber of results per page. Defaults to 100. Max 500.
pageintegerPage number (0-indexed). Defaults to 0.
Rget_vendor_sales_performance

Get Vendor Sales Performance

POST /public/v1/tools/get_vendor_sales_performance · requires tools:read

Vendor Central sales per ASIN over a date range: ordered units + ordered revenue (manufacturing view), shipped units + shipped revenue + shipped COGS + customer returns (sourcing view), and glance views. Note: vendor traffic is glance views only — sessions, page views, and conversion are not available for vendor accounts. Paginated; summary covers the full set.

ParameterTypeDescription
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
start_daterequiredstringStart date in YYYY-MM-DD format.
end_daterequiredstringEnd date in YYYY-MM-DD format.
asinsarray of stringOptional: filter to specific ASINs.
page_sizeintegerNumber of results per page. Defaults to 100. Max 500.
pageintegerPage number (0-indexed). Defaults to 0.
Rlist_vendor_products

List Vendor Products

POST /public/v1/tools/list_vendor_products · requires tools:read

Vendor Central product catalog (ASIN, item name, image) — use it to discover ASINs for the other vendor tools. Paginated.

ParameterTypeDescription
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
asinsarray of stringOptional: filter to specific ASINs.
page_sizeintegerNumber of results per page. Defaults to 100. Max 500.
pageintegerPage number (0-indexed). Defaults to 0.

Profit & Loss 5 tools

Real profit from Seller Central finance data: the P&L statement, profit per product, and unit costs (paid plans; switched on per account).

Rget_pnl_by_product

Get P&L by Product

POST /public/v1/tools/get_pnl_by_product · requires tools:read

Profit per SKU, or per product family with group_by: "family" (parent ASIN, every child summed): units, revenue, fees and feePct, cost of goods and cogsBasis (actual / estimated / missing / partial), ad spend, ad sales, gross and net profit, margin. One currency per call (currency; default the one with most revenue). sort_by / sort, filters sku / asin / parent_asin / cogs_basis (comma-separated), include_no_sales; paginated (page, page_size ≤ 500). summary covers the whole filtered set.

ParameterTypeDescription
start_datestringStart date (inclusive), YYYY-MM-DD. Default: 30 full days ago.
end_datestringEnd date (inclusive), YYYY-MM-DD. Default: yesterday.
currencystringWhich currency's rows to return (e.g. USD). Default: the currency with most revenue.
group_byenum'sku' (default) one row per SKU; 'family' one row per parent ASIN with every child summed.One of: sku, family
sort_byenumDefault 'revenue'. Cost fields sort by magnitude.One of: revenue, net_profit, gross_profit, margin_pct, fee_pct, fees, ad_spend, ad_sales, ad_share_of_revenue, cogs, units, units_returned
sortenumDefault 'desc'. Rows with no value for sort_by come last.One of: asc, desc
skustringOnly these SKUs (comma-separated for several).
asinstringOnly these child ASINs (comma-separated for several).
parent_asinstringOnly products in these families (comma-separated for several).
cogs_basisstringOnly rows whose cost basis is among: actual, estimated, missing, partial, none (comma-separated).
include_no_salesbooleanInclude ASINs that spent on ads but sold nothing. Default true.
pageinteger0-indexed page. Default 0.
page_sizeintegerRows per page. Default 100, max 500.
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
Rget_pnl_status

Get P&L Status

POST /public/v1/tools/get_pnl_status · requires tools:read

Whether Profit & Loss is available for the account (state: ready / syncing / not_enabled / not_connected / awaiting_access / reconnect_required / not_paid) and how far its data reaches: data.salesFrom, data.salesThrough, data.settlementThrough. The P&L feeds are not covered by check_data_coverage; a day after salesThrough is unknown, not zero. Settlement fees lag by up to two weeks.

ParameterTypeDescription
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
Rget_pnl_summary

Get P&L Statement

POST /public/v1/tools/get_pnl_summary · requires tools:read

The P&L statement for a date range, per currency: product sales, refunds, promotions, Amazon selling fees by type and as a % of sales (fee_breakdown, fee_pct), inbound / removal / subscription / Easy Ship / storage fees, reimbursements, ad spend, cost of goods (real and estimated), gross and net profit, margin, units, orders. granularity: "daily" adds a per-day series. Default window: the last 30 full days; max 400. Never add two currencies together. Paid plans only.

ParameterTypeDescription
start_datestringStart date (inclusive), YYYY-MM-DD. Default: 30 full days ago.
end_datestringEnd date (inclusive), YYYY-MM-DD. Default: yesterday.
currencystringReturn only this currency (e.g. USD). Default: every currency the account settles in.
granularityenum'daily' adds a day-by-day series. Default 'total'.One of: total, daily
fieldsenumWith granularity='daily': 'charted' (default) carries the main lines only; 'all' every line per day.One of: charted, all
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
Rget_product_costs

Get Product Costs (COGS)

POST /public/v1/tools/get_product_costs · requires tools:read

The cost-of-goods catalogue: per (SKU, currency) the saved unitCost, units, revenue and average sale price since sales history starts, plus the smart-COGS settings and counts of products with and without a cost. only_missing: true lists products that still need a cost; include_unsold: true adds listed products that have not sold. Paginated.

ParameterTypeDescription
only_missingbooleanOnly products with no unit cost on file. Default false.
include_unsoldbooleanAlso list products that have not sold since sales history starts. Default false.
currencystringOnly rows in this currency.
skustringOnly these SKUs (comma-separated for several).
asinstringOnly these ASINs (comma-separated for several).
pageinteger0-indexed page. Default 0.
page_sizeintegerRows per page. Default 100, max 500.
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
Wset_product_costs

Save Product Costs (COGS)

POST /public/v1/tools/set_product_costs · requires tools:write

Save unit costs per (SKU, currency) — costs: [{sku, unit_cost, currency?}], unit_cost: null clears — and optionally default_cogs_percent (0–95) or disable_cogs_estimate: true (workspace Owner/Admin). confirm: false (default) previews every change, the unchanged and rejected ones, and flags costs above the sale price without saving; confirm: true saves the same list. Up to 2,000 per call. Needs a key with write scope; uses no credits.

ParameterTypeDescription
costsarray of objectCosts to save. Each: sku (required), unit_cost (number, or null to clear), currency (optional, e.g. USD).Fields: sku*, unit_cost, currency (* required)
confirmbooleanfalse (default): preview only, nothing saved. true: save. Call with true only after the user confirmed the previewed changes.
default_cogs_percentnumberSmart-COGS estimate for products with no cost: % of revenue, 0–95. Owner/Admin only.
disable_cogs_estimatebooleantrue switches the smart-COGS estimate off. Owner/Admin only.
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.

Knowledge Files 7 tools

Knowledge-base / memory files uploaded to SellerMate.

Warchive_memory_file

Archive Memory File

POST /public/v1/tools/archive_memory_file · requires tools:write

Archive (delete) a memory file by fileId: hidden from every list and tool; nothing is removed from storage. Needs a key with write scope.

ParameterTypeDescription
fileIdrequiredstringThe fileId from list_knowledge_and_memory_files.
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
Wcreate_memory_file

Create Memory File

POST /public/v1/tools/create_memory_file · requires tools:write

Save a new memory file (md, txt or docx from Markdown) with a title, content and optional description. Up to 100,000 characters; 50 files per account; a title already in use is refused. Needs a key with write scope.

ParameterTypeDescription
titlerequiredstringClear, specific human-readable title, e.g. 'Belt campaign bidding rules'. Max 200 characters.
file_typerequiredenum'md' (Markdown), 'txt' (plain text) or 'docx' (Word, from Markdown content).One of: docx, md, txt
contentrequiredstringThe full text of the file. Markdown for 'md' and 'docx'.
descriptionstringOne line on what the file contains and when it is useful (max 500 characters).
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
Rfind_in_knowledge_and_memory_files

Find in Knowledge & Memory Files

POST /public/v1/tools/find_in_knowledge_and_memory_files · requires tools:read

Search up to 5 documents (fileIds) for 1–10 words or phrases (find): per file a match count, per-term counts and the top 10 matching lines with the text around them, numbered by line.

ParameterTypeDescription
fileIdsrequiredarray of string1–5 fileIds from list_knowledge_and_memory_files.
findrequiredarray of string1–10 words, phrases or short sentences to look for (2–200 characters each).
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
Rget_knowledge_and_memory_file_content

Get Knowledge & Memory File Content

POST /public/v1/tools/get_knowledge_and_memory_file_content · requires tools:read

Read one uploaded file's content by fileId (from list_knowledge_and_memory_files). Documents: the whole text, or pass start_line / end_line (at most 800 lines) for part of it. Tabular files return CSV text with a totalRows count and a truncated flag past the size cap.

ParameterTypeDescription
fileIdrequiredstringThe fileId from list_knowledge_and_memory_files.
versionintegerOptional: an older version to read. Omit for the current version.
line_numbersbooleanOptional: prefix each line with 'N| ' (documents only).
start_lineintegerOptional: first line to read (1-based); negative = the last N lines. Documents only.
end_lineintegerOptional: last line to read (inclusive); at most 800 lines per call.
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
Rget_knowledge_and_memory_file_details

Get Knowledge & Memory File Details

POST /public/v1/tools/get_knowledge_and_memory_file_details · requires tools:read

One file's details by fileId: the list fields plus currentVersion and lastEditedAt; include_history=true adds its kept versions.

ParameterTypeDescription
fileIdrequiredstringThe fileId from list_knowledge_and_memory_files.
include_historybooleanOptional: also return the file's kept versions, newest first.
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
Rlist_knowledge_and_memory_files

List Knowledge & Memory Files

POST /public/v1/tools/list_knowledge_and_memory_files · requires tools:read

List the knowledge-base / memory files uploaded to SellerMate for this account: fileId, title, file kind (document / tabular), size, description, context snippet, token count.

ParameterTypeDescription
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
querystringOptional: what to find in the user's files, in plain words. Leave empty for the full list.
fileIdstringOptional, with query: search inside this one file only.
Wupdate_memory_file

Update Memory File

POST /public/v1/tools/update_memory_file · requires tools:write

Change a memory file by fileId: content (mode edit / append / replace — Markdown and text files), title, description, or mode: "revert" with a version. Each change is a new version (last 15 kept). Needs a key with write scope.

ParameterTypeDescription
fileIdrequiredstringThe fileId from list_knowledge_and_memory_files.
modeenumHow to change the content, or 'revert' to restore version. Omit when only the title / description change.One of: edit, append, replace, revert
editsarray of objectmode 'edit': all find/replace pairs OR all line ranges (not mixed).Fields: find, replace_all, start_line, end_line, replace* (* required)
contentstringmode 'append': text to add at the end. mode 'replace': the whole new file.
titlestringNew title — only when the user asks to rename. Leave empty otherwise.
descriptionstringNew description — only when the user asks to change it. Leave empty otherwise.
change_summaryrequiredstringOne line on what changed (max 200 characters).
versionintegermode 'revert' only: the kept version to restore.
base_versionintegerThe version you read. Required for mode 'replace'; optional otherwise.
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.

Automation & Dayparting 10 tools

Automations, dayparting schedules, and hourly performance.

Wcreate_automation

Create Automation

POST /public/v1/tools/create_automation · requires tools:write

Create an automation rule. Required: automate_for (the category, which fixes the valid condition fields, actions and scope), a name unique among the account's live automations, conditions (the if / else-if / else rule tree), rule_schedule ({type: "weekly" | "monthly", days: [...]}; Campaign rules also need timeSlots) and a scope — selected_campaigns (or selected_campaign_tags), or selected_mapping for Mapped Harvesting. Everything is validated against the rule editor's whitelists. For safety status defaults to INACTIVE, so a new rule does nothing until it is activated (here or via update_automation); each action's isAutoExecute defaults to true for Inventory and Campaign and false elsewhere, where the rule only reports what it would do. Campaign rules take selected_campaigns as {campaignId, baseBudget} objects. Omitted lookback, processing-time and notification fields get the editor's defaults, and the response lists which were defaulted.

ParameterTypeDescription
automate_forrequiredstringThe automation category, one of: Keyword Targets, All Targets, Search Terms, Mapped Harvesting, Placements, Ad Products, Campaign, Inventory. Selects which condition fields, actions and scope fields are valid — see update_automation's per-category reference.
namerequiredstringAutomation name. Must not match an existing live automation in the account.
descriptionstring
statusenumDefaults to 'INACTIVE' — the rule is created but does not run. Pass 'ACTIVE' to start it immediately; that requires a scope to be set.One of: ACTIVE, INACTIVE
conditionsrequiredarray of objectThe if/else_if/else rule blocks: {id, type, condition, action}. Required. Each action takes isAutoExecute; omitted, it defaults to true for Inventory and Campaign and false elsewhere, matching the app. Nested condition groups require advancedMode true. See update_automation's description for the full structure and the valid fields/actions per category.
rule_schedulerequiredobjectWhen the rule runs. Required.Fields: type, days, timeSlots
rule_processing_timestringThe single time of day the rule runs (7:00 AM-9:00 PM). Not used by Campaign, which uses rule_schedule.timeSlots.
selected_campaignsarray of string | objectCampaign id strings; objects {campaignId, adGroupsIds} when campaign_adgroup_selection is true; objects {campaignId, baseBudget} for Campaign automations, which require objects.
selected_campaign_tagsarray of objectCampaign tags scoping the rule; use with campaign_tag_selection.
campaign_adgroup_selectionboolean
campaign_tag_selectionboolean
selected_asinsarray of stringInventory only — the ASINs the stock rule watches.
selected_mappingobjectMapped Harvesting only, and required for it — ONE existing harvesting mapping (a single object, never a list; from list_harvesting_mappings). For several mappings, create one automation per mapping.Fields: mapping_id, mapping_name
todays_live_databooleanCampaign only — evaluate against today's live performance instead of the closed lookback window.
lookback_periodobjectDefaults to {value: 7, unit: 'days'}. Not used by Inventory.Fields: value, unit
lookback_skip_daysnumber | stringDays to skip from today; must be >= 0. Defaults to 3.
exclude_listobject | arrayEntities the rule must leave alone. Shape depends on the category: {phrase, exact} for Keyword Targets/Search Terms/Mapped Harvesting; {phrase, exact, asins} for All Targets; {asins: [...]} for Ad Products; a flat array of warehouse code strings for Inventory. Placements and Campaign have none. Defaults to the category's empty shape.
email_notificationboolean
email_addressesarray of string
advancedModeboolean
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
Wcreate_dayparting

Create Dayparting

POST /public/v1/tools/create_dayparting · requires tools:write

Create a dayparting schedule of one type, passing the whole definition in dayparting. bid and placement: name, state, slotInterval (1, 4 or 6), bidAllocation (allocationType + timeSlots) and selectedCampaigns — per campaign with optional targets for bid, or one {campaignId, placementType, basePlacementPercentage} entry per campaign-placement pair for placement (Sponsored Products only). budget and portfolio: name, a non-empty rules list ({days, hour, minute, action, budget}) and selectedCampaigns ({campaignId, baseBudget}) or selectedPortfolios ({portfolioId, baseBudget}); these are rule-driven and take no time slots. baseBidStrategy says how covered targets without a base bid of their own get one. Base bids themselves are set with update_target.

ParameterTypeDescription
typerequiredenumWhich kind of dayparting to create (required): bid, budget, portfolio, or placement.One of: bid, budget, portfolio, placement
daypartingrequiredobjectThe full definition of the schedule to create. The valid/required fields depend on 'type' — see the tool description. Do not include the account id here; it is injected from the account in scope.
baseBidStrategyenumHow to give covered targets a base bid when some have none of their own (auto-targeting expressions that bid at their ad group default). 'use_current_bid' adopts the bid each target already runs at, so spend is unchanged until the multipliers apply. 'custom' means you have already set your own values with update_target (its baseBid field) and this call should proceed. Only send this when the tool asked for it.One of: use_current_bid, custom
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
Rget_automation

Get Automation

POST /public/v1/tools/get_automation · requires tools:read

Full definition of one automation by automation_id: its if / else-if / else rule blocks (conditions and actions), the campaigns, tags, ASINs or harvesting mapping it runs on, exclusions, schedule, lookback and notification settings.

ParameterTypeDescription
automation_idrequiredstringThe automation id (from list_automations).
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
Rget_dayparting

Get Dayparting

POST /public/v1/tools/get_dayparting · requires tools:read

Full definition of one dayparting schedule by type + dayparting_id: for bid / placement the time-slot allocation and the covered campaigns with their targets or placement entries; for budget / portfolio the rules and the covered campaigns or portfolios with their base budgets.

ParameterTypeDescription
typerequiredenumWhich kind of dayparting the id refers to (required): bid, budget, portfolio, or placement.One of: bid, budget, portfolio, placement
dayparting_idrequiredstringThe dayparting id (from list_daypartings).
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
Rget_hourly_performance

Get Hourly Performance

POST /public/v1/tools/get_hourly_performance · requires tools:read

Hourly advertising performance at level campaign or keyword (target level): rows bucketed by group_by (default ["hour"]; also timestamp for each hour of each day, weekday, date, and the entity dimensions campaign, keyword, ad_group), each with cost, clicks, impressions, sales, conversions, units, ACOS, ROAS, CTR, CVR and CPC, plus a totals row. Narrow with campaign_ids or keyword_ids. Always pass start_date / end_date: hourly data is rebuilt one whole local day at a time by a batch job, so today is normally empty and the range should end at yesterday or earlier. Hours are in the account timezone.

ParameterTypeDescription
levelrequiredenumGranularity (required): 'campaign' or 'keyword' (target-level).One of: campaign, keyword
start_datestringStart date YYYY-MM-DD. Should always be passed — omitting it (with end_date) defaults to today, which usually has no rows yet.
end_datestringEnd date YYYY-MM-DD. Defaults to start_date; omitting both defaults to today. End at yesterday or earlier for the most recent complete data.
group_byarray of enumHow to bucket rows (default ['hour']). Time dims (both levels): 'hour' (0-23), 'weekday', 'date', 'timestamp' (each hour of each day). Entity dims: 'campaign' (both levels); 'keyword' and 'ad_group' (keyword level only). Combine e.g. ['weekday','hour'] for a day-of-week x hour pattern.
campaign_idsarray of stringOptional. Restrict to these campaign IDs (valid for both levels).
keyword_idsarray of stringOptional. Restrict to these target IDs. Only valid when level='keyword'.
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
Rlist_automations

List Automations

POST /public/v1/tools/list_automations · requires tools:read

Automation (rule) inventory for an account: id, name, category (automate_for), status, created / updated time and how many campaigns each covers. Pass type to filter to one category (Keyword Targets, All Targets, Search Terms, Mapped Harvesting, Placements, Ad Products, Campaign, Inventory). Deleted automations are never included; dayparting schedules are listed by list_daypartings. Paginated (page_size 100, max 500).

ParameterTypeDescription
typeenumOptional. Filter to a single automation category (automate_for). Omit to list automations of all types.One of: Keyword Targets, Inventory, Search Terms, Placements, All Targets, Ad Products, Campaign, Mapped Harvesting
pageintegerPage number (0-indexed). Defaults to 0.
page_sizeintegerResults per page. Defaults to 100. Max 500.
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
Rlist_daypartings

List Daypartings

POST /public/v1/tools/list_daypartings · requires tools:read

Dayparting schedule inventory for one type — bid (time-based target bid adjustments), placement (placement bid adjustments), budget (campaign budget adjustments) or portfolio (portfolio budget adjustments): each schedule's id, name, state / status, creation time and how many campaigns, targets or portfolios it covers.

ParameterTypeDescription
typerequiredenumWhich kind of dayparting to list (required): bid, budget, portfolio, or placement.One of: bid, budget, portfolio, placement
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
Rpreview_automation

Preview Automation

POST /public/v1/tools/preview_automation · requires tools:read

Dry run of a saved automation by automation_id: the entities (campaigns, keywords, targets, ads, …) it would act on right now and the action each would get, computed over the rule's current lookback window without applying anything. would_act_on is the total match count. Use it before setting a rule ACTIVE. Paginated (page_size 50, max 200).

ParameterTypeDescription
automation_idrequiredstringThe automation id (from list_automations).
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
pageintegerZero-based page number. Default 0.
page_sizeintegerRows per page. Default 50, max 200.
Wupdate_automation

Update Automation

POST /public/v1/tools/update_automation · requires tools:write

Change an existing automation by automation_id; updates holds only the fields to change (omitted fields keep their value). Editable everywhere: name, description, status (ACTIVE / INACTIVE; cannot archive), conditions, rule_schedule and notification settings; most categories also take selected_campaigns, selected_campaign_tags, rule_processing_time, lookback_period, lookback_skip_days and exclude_list; Inventory takes selected_asins, Mapped Harvesting selected_mapping, Campaign todays_live_data and rule_schedule.timeSlots. The category itself cannot change, and a field the category does not have is reported back, never stored. Activating requires a scope in the same call. AI Agent automations cannot be edited here.

ParameterTypeDescription
automation_idrequiredstringThe automation id to update (from list_automations).
updatesrequiredobjectONLY the fields to change. Do not include _id, automate_for, amazon_account_id, or workspace_id — these are not editable here. Which of the properties below apply depends on the automation's category; sending one the category does not have is ignored and reported back.Fields: name, description, status, selected_campaigns, selected_campaign_tags, campaign_adgroup_selection, campaign_tag_selection, selected_asins, selected_mapping, todays_live_data, rule_schedule, rule_processing_time, lookback_period, lookback_skip_days, exclude_list, conditions, email_notification, email_addresses, advancedMode
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
Wupdate_dayparting

Update Dayparting

POST /public/v1/tools/update_dayparting · requires tools:write

Change an existing dayparting schedule by type + dayparting_id; updates holds only the fields to change. Sent lists replace: a campaign's targets (bid) is its complete desired set, and selectedCampaigns (placement) and rules (budget / portfolio) replace the whole list, so read the current definition with get_dayparting and edit it. Pause or archive via state (bid / placement) or status (budget / portfolio). A baseBid sent here is ignored — set base bids with update_target.

ParameterTypeDescription
typerequiredenumWhich kind of dayparting the id refers to (required): bid, budget, portfolio, or placement.One of: bid, budget, portfolio, placement
dayparting_idrequiredstringThe dayparting id to update (from list_daypartings).
updatesrequiredobjectThe fields to change on this dayparting. Only include the fields you want to modify; the rest are left as-is. The valid fields depend on 'type' — see the tool description. Do not include the id or the account id here.
baseBidStrategyenumHow to give covered targets a base bid when some have none of their own (auto-targeting expressions that bid at their ad group default). 'use_current_bid' adopts the bid each target already runs at, so spend is unchanged until the multipliers apply. 'custom' means you have already set your own values with update_target (its baseBid field) and this call should proceed. Only send this when the tool asked for it.One of: use_current_bid, custom
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.

Insights & Alerts 5 tools

AI performance summary, recommendations, fired alerts, and the activity log.

Wdismiss_recommendations

Dismiss Recommendations

POST /public/v1/tools/dismiss_recommendations · requires tools:write

Move open recommendations out of the queue — the app's Ignore / Mark as read / Action not required buttons. Pass up to 50 recommendation_ids from list_recommendations and a status (ignored default, action_not_required, mark_as_read). Only recommendations still new are changed; others are reported as skipped. Nothing is applied to Amazon — to act on a recommendation, make the equivalent change with the normal write tools.

ParameterTypeDescription
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
recommendation_idsrequiredarray of stringRecommendation ids from list_recommendations (max 50).
statusenumTarget state. Default 'ignored'.One of: ignored, action_not_required, mark_as_read
Rget_activity_log

Get Activity Log

POST /public/v1/tools/get_activity_log · requires tools:read

The account's activity log — the audit trail of changes actually made to campaigns, keywords, targets and ads, newest first, with old value, new value and the source that made it (Bulk Action, Dayparting, AI Recommendation, AI Agent, MCP, Automation, …). Filter by sources, change_types (e.g. Bid Change, Budget Change, State Change), campaign_ids (max 200), targeting_values, changed_by_ids (or system), status (error = changes that failed to apply) and search. mode: "summary" returns no rows — just the total and counts by source, change type, status, entity and the 10 busiest days — so call it first to size a query. Without start_date / end_date the last 7 full days ending yesterday (account timezone) are used; only about the last 30 days are retained, and the newest few hours may not be processed yet. On this API rows come back as JSON objects (format: "toon" gives the compact columnar text instead). Paginated (page_size 100, max 500).

ParameterTypeDescription
start_datestringStart of the window, ISO date (e.g. '2026-08-01'). Pair with end_date.
end_datestringEnd of the window, ISO date, inclusive. Pair with start_date.
sourcesarray of enumOnly changes from these sources. Use ['Automation'] for automation activity.
change_typesarray of stringOnly these change types, e.g. 'Bid Change', 'Budget Change', 'State Change', 'Add Keyword', 'Add Negative Keyword', 'Campaign Creation'.
campaign_idsarray of stringRestrict to these campaigns (max 200). From list_campaigns.
targeting_valuesarray of stringRestrict to these ASINs or keyword texts.
changed_by_idsarray of stringUser ids, or the literal 'system' for automated changes.
statusenumOnly successful, or only failed, changes.One of: success, error
searchstringFree-text search over campaigns/targets. Ignored when campaign_ids or targeting_values is already set.
modeenum'rows' (default) returns the page of change rows. 'summary' returns no rows at all — the total plus counts by source, change type, status, entity and the 10 busiest days in the window (not every day), for exactly the same filters. Use it to size a query before fetching it. 'page' and 'page_size' have no effect on a summary, though an invalid value for either is still a validation error. Summary counts are not all reusable as filters: every source label it reports can be passed back in 'sources', but a few change-type labels are display-only and are rejected as 'change_types'.One of: summary, rows
pageintegerPage number (0-indexed). Defaults to 0.
page_sizeintegerRows per page (rows mode only). Defaults to 100, max 500. An over-max value is clamped, not rejected, and the reduction is stated in 'summary'.
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
Rget_ai_performance_summary

Get AI Performance Summary

POST /public/v1/tools/get_ai_performance_summary · requires tools:read

The latest AI-written summary of the account's advertising performance — the summary card on the SellerMate Home dashboard: a short narrative plus structured insights and positive / negative / neutral pointers when available. Generated periodically: check generated_at; available: false means none has been generated yet.

ParameterTypeDescription
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
Rget_fired_alerts

Get Fired Alerts

POST /public/v1/tools/get_fired_alerts · requires tools:read

The alerts that have fired on an account, newest first — the Alerts page's event log. Each row has when it fired, the automation (alert) name and category, the entity it fired on, a description of the matched condition and the metric snapshot it fired on. start_date / end_date are inclusive account-local days (default: the last 7 days including today; max window 90 days); automation_name is a case-insensitive partial match. To see how an alert rule is configured use list_automations / get_automation. Paginated (page_size 50, max 200).

ParameterTypeDescription
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
start_datestringFirst day, YYYY-MM-DD (inclusive).
end_datestringLast day, YYYY-MM-DD (inclusive).
automation_namestringOnly alerts whose automation name contains this text (case-insensitive).
pageintegerZero-based page number. Default 0.
page_sizeintegerRows per page. Default 50, max 200.
Rlist_recommendations

List Recommendations

POST /public/v1/tools/list_recommendations · requires tools:read

The recommendations SellerMate has generated for an account, newest first: suggested bid changes, keywords / targets to add or negate, and similar actions, each with the entity it concerns. statuses defaults to ["new"] (also executed, executed_from_outside, ignored, action_not_required, mark_as_read, error); source is ai (default) or automation. executed history defaults to the last 30 days unless start_date + end_date are given. The result carries byState and byCategory counts over the whole match, then one page of rows. Read-only. Paginated (page_size 50, max 200).

ParameterTypeDescription
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
statusesarray of enumRecommendation states to include. Default ['new'].
sourceenum'ai' (default) or 'automation' (proposed by automation rules).One of: ai, automation
start_datestringFirst day, YYYY-MM-DD. Give with end_date.
end_datestringLast day, YYYY-MM-DD. Give with start_date.
ad_productsarray of stringOnly recommendations on these keyword texts or ASINs.
pageintegerZero-based page number. Default 0.
page_sizeintegerRows per page. Default 50, max 200.

Other 7 tools

Everything else.

Wcreate_live_ads_tracking

Create Live Ads Tracking

POST /public/v1/tools/create_live_ads_tracking · requires tools:write

Set up the account's Live Ads TRACKING schedule for a tracking_type — what the Live Ads page does under 'Ke…

ParameterTypeDescription
tracking_typerequiredenum'keyword' = keyword rank tracking; 'asin' = ASIN (product page) tracking.One of: keyword, asin
schedule_namerequiredstringSchedule name.
frequencyrequiredenumHow often it runs.One of: Daily, Weekly, Monthly
timerequiredstringRun time 'HH:MM' (24h) in the account's timezone, or in 'timezone' if given. Converted to UTC; the review shows both.
timezonestringOptional IANA timezone for 'time', e.g. 'Asia/Kolkata'. Defaults to the account's.
week_dayenumWeekly only: the local day it runs. Defaults to SUN.One of: MON, TUE, WED, THU, FRI, SAT, SUN
month_dayintegerMonthly only: the local day of month it runs. Defaults to 28.
receiversrequiredarray of string1-3 emails that receive the CSV report.
previewbooleanReturn the review (run time in local timezone AND UTC, items, receivers) without saving. Defaults to false.
itemsrequiredarray of stringThe COMPLETE list of keywords (or ASINs) to track.
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
Wdelete_live_ads_tracking

Delete Live Ads Tracking

POST /public/v1/tools/delete_live_ads_tracking · requires tools:write

Delete the account's Live Ads TRACKING schedule for a tracking_type ('keyword' or 'asin')

ParameterTypeDescription
tracking_typerequiredenum'keyword' = keyword rank tracking; 'asin' = ASIN (product page) tracking.One of: keyword, asin
previewbooleanShow what would be deleted without deleting. Defaults to false.
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
Rget_live_ads_tracking

Get Live Ads Tracking

POST /public/v1/tools/get_live_ads_tracking · requires tools:read

Show the account's Live Ads TRACKING schedules — the scheduled Amazon checks the Live Ads page calls 'Keywo…

ParameterTypeDescription
tracking_typeenumOptional. Only this schedule; both when omitted.One of: keyword, asin
include_itemsbooleanList the tracked keywords/ASINs. Defaults to false.
items_pageintegerItem page (0-indexed). Defaults to 0.
items_page_sizeintegerItems per page. Defaults to 100.
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
Rget_live_ads_tracking_history

Get Live Ads Tracking History

POST /public/v1/tools/get_live_ads_tracking_history · requires tools:read

Read what SellerMate's scheduled Live Ads tracking captured on Amazon for an account — the same history the…

ParameterTypeDescription
tracking_typerequiredenum'keyword' for keyword rank tracking, 'asin' for ASIN tracking.One of: keyword, asin
viewenum'snapshot' (default) = one day; 'trend' = one ASIN over a date range.One of: snapshot, trend
datestringSnapshot day, YYYY-MM-DD (UTC). Omit for the most recent day with data.
keywordsarray of stringSnapshot, keyword tracking: only these keywords (exact, as tracked).
asinsarray of stringSnapshot: for ASIN tracking, only these ASINs; for keyword tracking, only results showing these ASINs.
ad_typeenumSnapshot, keyword tracking: which results to return. Defaults to 'all'.One of: all, sponsored, organic
max_positionintegerSnapshot, keyword tracking: drop results ranked below this. Defaults to 10.
latest_run_onlybooleanSnapshot: keep only each keyword/ASIN's last run of the day (default true). False returns every run that day.
keywordstringTrend, keyword tracking: the tracked keyword (exact, as tracked).
asinstringTrend: the ASIN to follow.
start_datestringTrend: first day, YYYY-MM-DD. Defaults to 7 days before end_date.
end_datestringTrend: last day (inclusive), YYYY-MM-DD. Defaults to today (UTC).
pageintegerSnapshot page number (0-indexed). Defaults to 0.
page_sizeintegerSnapshot rows per page. Defaults to 200. Max 1000.
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
Rlist_harvesting_mappings

List Harvesting Mappings

POST /public/v1/tools/list_harvesting_mappings · requires tools:read

List the saved harvesting mappings for a specific Amazon account — the source ad group -> destination ad gr…

ParameterTypeDescription
mapping_idstringOptional. Return this one mapping in full instead of the list.
namestringOptional. Partial, case-insensitive filter on the mapping name.
pageintegerPage number (0-indexed). Defaults to 0.
page_sizeintegerResults per page. Defaults to 100. Max 500.
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
Rsearch_live_ads

Search Live Ads

POST /public/v1/tools/search_live_ads · requires tools:read

Search Amazon RIGHT NOW in the account's marketplace, exactly as the Live Ads page does

ParameterTypeDescription
search_typerequiredenum'keyword' = Amazon search results; 'asin' = product page details.One of: keyword, asin
keywordsarray of stringsearch_type 'keyword': the search terms (up to 10).
asinsarray of stringsearch_type 'asin': the ASINs to look up (up to 10).
my_asinsarray of stringOptional. Your ASINs, flagged with is_my_asin in the rows.
ad_typeenumKeyword search: which results to return. Defaults to 'all'.One of: all, sponsored, organic
max_positionintegerKeyword search: drop results ranked below this. Defaults to all.
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
Wupdate_live_ads_tracking

Update Live Ads Tracking

POST /public/v1/tools/update_live_ads_tracking · requires tools:write

Change, pause or resume the account's Live Ads TRACKING schedule for a tracking_type ('keyword' or 'asin')

ParameterTypeDescription
tracking_typerequiredenum'keyword' = keyword rank tracking; 'asin' = ASIN (product page) tracking.One of: keyword, asin
schedule_namestringSchedule name.
frequencyenumHow often it runs.One of: Daily, Weekly, Monthly
timestringRun time 'HH:MM' (24h) in the account's timezone, or in 'timezone' if given. Converted to UTC; the review shows both.
timezonestringOptional IANA timezone for 'time', e.g. 'Asia/Kolkata'. Defaults to the account's.
week_dayenumWeekly only: the local day it runs. Defaults to SUN.One of: MON, TUE, WED, THU, FRI, SAT, SUN
month_dayintegerMonthly only: the local day of month it runs. Defaults to 28.
receiversarray of string1-3 emails that receive the CSV report.
previewbooleanReturn the review (run time in local timezone AND UTC, items, receivers) without saving. Defaults to false.
itemsarray of stringThe COMPLETE list of keywords (or ASINs) to track; replaces the current list.
add_itemsarray of stringKeywords/ASINs to add to the current list.
remove_itemsarray of stringKeywords/ASINs to remove from the current list.
stateenumPAUSED to stop the schedule, ENABLED to resume it. Optional.One of: ENABLED, PAUSED
amazon_account_idrequiredstringThe Amazon account ID (from get_user_context). Auto-filled when your API key is restricted to a single Amazon account.
7.

Examples

Discover your accounts

1curl -s -X POST https://api.sellermate.ai/public/v1/tools/get_user_context \
2 -H "X-API-Key: sm_live_..." -H "Content-Type: application/json" -d '{}'

Response

1{
2 "user": { "id": "...", "name": "API Key: Reporting" },
3 "workspaces": [{
4 "id": "<workspace_id>", "name": "Acme",
5 "accounts": [
6 { "id": "<amazon_account_id>", "name": "Acme US", "accountType": "seller",
7 "country": "US", "currency": "USD", "marketplace": "ATVPDKIKX0DER" }
8 ]
9 }]
10}

Campaign performance (paginated)

1curl -s -X POST https://api.sellermate.ai/public/v1/tools/get_campaign_performance \
2 -H "X-API-Key: sm_live_..." -H "Content-Type: application/json" \
3 -d '{"amazon_account_id":"<id>","start_date":"2026-05-01","end_date":"2026-05-31","page_size":50}'

Response

1{
2 "data": [ { "campaignName": "...", "cost": 1234.5, "attributedSales14d": 5678.9, "acos": 21.7, "roas": 4.6 } ],
3 "summary": { "...": "full-set totals" },
4 "pagination": { "page": 0, "pageSize": 50, "total": 190, "totalPages": 4, "hasMore": true, "nextCursor": "..." },
5 "dateRange": { "start": "2026-05-01", "end": "2026-05-31" }
6}

Vendor sales by ASIN

1curl -s -X POST https://api.sellermate.ai/public/v1/tools/get_vendor_sales_performance \
2 -H "X-API-Key: sm_live_..." -H "Content-Type: application/json" \
3 -d '{"amazon_account_id":"<vendor_account_id>","start_date":"2026-05-01","end_date":"2026-05-31"}'

Response

1{
2 "connected": true,
3 "data": [
4 { "asin": "B0XXXXXXX1", "itemName": "...",
5 "orderedUnits": 1240, "orderedRevenueAmount": 38760.00,
6 "shippedUnits": 1180, "shippedRevenueAmount": 36890.00, "shippedCogsAmount": 21500.00,
7 "customerReturns": 14, "glanceViews": 90250 }
8 ],
9 "summary": { "orderedRevenueAmount": 38760.00, "shippedRevenueAmount": 36890.00, "glanceViews": 90250, "asins": 1 },
10 "pagination": { "page": 0, "pageSize": 100, "total": 1, "hasMore": false }
11}

Update a campaign budget (requires tools:write)

1curl -s -X POST https://api.sellermate.ai/public/v1/tools/update_campaign \
2 -H "X-API-Key: sm_live_..." -H "Content-Type: application/json" \
3 -d '{"updates":[{"campaign_id":"<id from list_campaigns>","budget":25.0}],"_reasoning":"Scaling a winner"}'

Outcomes: applied → { "status":"success", "applied":true, ... }; blocked by policy → 422 { "error":"Policy violation …", "rule":"maxBudget" }. A write either applies or returns 422.

Python quickstart

1import requests
2
3BASE, KEY = "https://api.sellermate.ai", "sm_live_..."
4H = {"X-API-Key": KEY, "Content-Type": "application/json"}
5
6def call(tool, **args):
7 r = requests.post(f"{BASE}/public/v1/tools/{tool}", headers=H, json=args, timeout=120)
8 r.raise_for_status()
9 return r.json()
10
11ctx = call("get_user_context")
12account_id = ctx["workspaces"][0]["accounts"][0]["id"]
13perf = call("get_campaign_performance", amazon_account_id=account_id,
14 start_date="2026-05-01", end_date="2026-05-31")
15print(perf["summary"])
8.

Notes & limits

  • Per-call batch cap: write tools accept at most 50 items in updates per call.
  • One-time secret: an API key’s value is shown only at creation; lost keys must be revoked and recreated.
  • Revocation is immediate: a revoked key returns 401 on the next call.
  • SP-API / Vendor tools return { "connected": false, "connectUrl": … } when the required Seller/Vendor Central connection is missing — that’s a normal response, not an error.
  • Discovery is authoritative: GET /public/v1/tools (and /tools/{name}) always reflects the live set of tools and parameters available to your key.
Ready to build? Create an API key in the app (Profile → API Keys) and start with get_user_context.
Book Demo