DataDive MCP
OfficialSummary: Read and manage DataDive niche research, keyword/competitor intelligence, rank-radar tracking, AI listing copy, and connected Amazon seller data — with quota checks and confirmation gating on anything that spends tokens or destroys data.
Niche research (read-only): list/filter niches by text/ASIN with paging; per niche get the master keyword list (volume, relevancy, per-ASIN organic ranks), keyword roots (top words by frequency/broad volume), competitors (titles, BSR, category tree, sales, revenue, ratings, price, opportunity stats), and ranking-juice breakdowns (current vs optimized title/bullets/description).
Niche dives (async, spends dive tokens): start a new dive from a seed ASIN + marketplace + competitor count, re-dive an existing niche (
same_competitorsto refresh, ordiscoverwith hero/locked/excluded ASINs), and pollget_dive_statusforin_progress/success/error.Rank Radars: create tracking for an ASIN's keyword rankings (spends Search Term tokens), list/filter by niche, status, or text, fetch historical organic/impression ranks over a date range, add/pause/resume individual keywords, pause/resume or permanently delete the whole radar.
Listing copy (async, spends an AI Copywriter prompt): draft an optimized title/bullets/description via
cosmo,ranking-juice,nlp, orcosmo-rufusstrategies and poll the generation status.Seller data (read-only): discover connected seller accounts and marketplaces; browse/search a seller's catalog; list price/content/image listing changes with optional ranking/conversion correlation; get per-fulfillment-center sellable inventory for an ASIN.
Alerts (read-only): indexing-issue alerts for ASINs no longer indexed on tracked keywords, and blind-spend alerts showing wasted ad spend per search term (spend, sales, clicks, CVR).
Quota & billing (read-only): check usage/capacity per billable feature plus next refresh date, and audit billable token-consumption logs by type, user, or date range.
Safety behavior: irreversible actions (
create_rank_radar,create_niche_dive,redive_niche,generate_listing_copy,delete_niche,delete_rank_radar) require explicitconfirm: trueand are not safe to retry; pause/resume tools need no confirmation, and most lookups are paginated (≤50 per page, except usage logs at ≤200).
Note: the README also describes SQP/PPC rank-radar data, PPC campaign listing, and dives from a custom competitor list, but those tools are absent from the provided schema.
Provides tools for querying Amazon product, competitor, keyword, and seller data — niches, rank radars, catalogs, listing changes, inventory distribution, and alerts — through the DataDive API.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@DataDive MCPList my DataDive niches in marketplace com."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@datadive-tools/mcp
An MCP server that lets Claude (or any MCP-compatible client) query your DataDive niches, keywords, competitors, and Rank Radar data using your existing API key.
Runs locally on your machine over stdio. Your API key never leaves your machine
except as the x-api-key header on requests to api.datadive.tools.
What you can ask
"List my DataDive niches in marketplace
com.""What's the master keyword list for niche
z515cGOFg3?""Who are the top competitors in niche X and what are their sales?"
"What's my ranking juice for niche X — where can I improve?"
"Show me my rank radars."
"Plot the organic ranking trend for rank radar Y from 2024-03-01 to 2024-04-01."
"Run a niche dive on ASIN B08N5WRWNW in the US marketplace with 5 competitors."
"Refresh niche X with today's data, same competitors."
"Re-dive niche X with 12 competitors but keep B08N5WRWNW in the set."
"Is my dive done yet?"
"Start a rank radar tracking 10 keywords for ASIN B08N5WRWNW in niche X."
"Which Amazon seller accounts are connected?"
"Search my catalog for active 'widget' products in the US."
"What price or content changes happened on my listings last week?"
Related MCP server: YouTube MCP Server
1. Get a DataDive API key
Sign in at https://2.datadive.tools.
Go to Settings → API Key (
/api-key).Click Generate API Key. Copy the value — you'll paste it into your MCP client config below.
Requires the Billing Manager or Owner role and the Standard plan or higher. Contact your org admin if you can't see the page.
2. Add it to your MCP client
Claude Desktop
Edit your config file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Add the datadive entry under mcpServers:
{
"mcpServers": {
"datadive": {
"command": "npx",
"args": ["-y", "@datadive-tools/mcp"],
"env": {
"DATADIVE_API_KEY": "YOUR_API_KEY"
}
}
}
}Restart Claude Desktop. You should see datadive in the tools menu.
Claude Code
claude mcp add datadive -- npx -y @datadive-tools/mcp
# Then add the env var via:
# claude mcp add datadive --env DATADIVE_API_KEY=YOUR_API_KEY -- npx -y @datadive-tools/mcpOr edit .mcp.json in your project / ~/.claude/mcp.json globally with the
same JSON shape as above.
Cursor
Settings → MCP → Add new MCP server and paste the same JSON shape:
{
"datadive": {
"command": "npx",
"args": ["-y", "@datadive-tools/mcp"],
"env": { "DATADIVE_API_KEY": "YOUR_API_KEY" }
}
}3. Verify
Ask Claude: "List my DataDive niches."
You should see a tool call to list_niches and a JSON response with your
niches, plus pagination metadata. If you don't, see Troubleshooting below.
Available tools
Tool | Description |
| Paginated list of your niches. Discovery step — returns |
| Master keyword list for a niche: search volume, relevancy, competitor ASIN ranks. |
| Keyword lexical roots for a niche — high-impact words with frequency and broad search volume. |
| Competitor ASINs, titles, BSR, category and niche statistics (sales, revenue, ratings, opportunity score). |
| DataDive proprietary ranking-juice metric per competitor (current vs optimized listing). |
| Paginated list of rank radars. Filter by |
| Historical keyword rankings for a rank radar within a |
| Amazon Search Query Performance per Rank Radar keyword: search volume, impressions, clicks, cart adds, purchases — market total vs this ASIN family. Same date range and paging as |
| Sponsored Products metrics per Rank Radar keyword: sponsored rank, spend, sales, ACOS, CPC, match types; optional per-campaign breakdown. Same date range and paging as |
| Spends dive tokens. Starts new niche research from a seed ASIN. Async — returns a |
| Spends dive tokens. Starts niche research from your own list of 2–200 competitor ASINs, with no automatic discovery. Async — returns a |
| Spends dive tokens. Refreshes an existing niche with current data — either the same competitors or a newly discovered set. Async — returns a |
| Poll a dive started by |
| Spends Search Term tokens. Starts tracking keyword rankings for an ASIN in a niche. Returns a |
| Starts tracking extra keywords on an existing rank radar. Takes one Daily Tracked Keywords slot per new keyword; reversible with |
| Pauses individual keywords of a rank radar, keeping their history and freeing their tracking slots. Takes keyword ids from |
| Restarts tracking on paused keywords of a rank radar. Takes back one tracking slot each. |
| Pauses a whole rank radar (what the API calls archiving — listed under |
| Reactivates a paused rank radar, restoring as many keywords as the remaining quota allows (most relevant first). |
| Destroys ranking history. Deletes a rank radar permanently (listed under |
| Destroys niche data. Deletes a niche with its keywords, competitors and dive history; spent dive tokens are not refunded. Blocked while a rank radar uses the niche. Requires |
| Spends an AI Copywriter prompt. Drafts an optimised title, bullets and description from a niche's keyword research. Nothing is published to Amazon. Async — returns a |
| Poll a draft started by |
| Paginated list of connected Amazon seller accounts. Discovery step — returns the |
| Paginated catalog of a seller's own ASINs. Filter by |
| Paginated price/content/image changes on a seller's listings. Filter by |
| Sponsored Products campaigns of a seller account with window totals and a per-placement breakdown. Filter by |
| Per-fulfillment-center sellable inventory for an ASIN. Requires |
| Paginated list of indexing-issue alerts — ASINs no longer indexed for their tracked keywords. Filter by |
| Paginated list of blind-spend alerts — ad spend on search terms with little or no sales, with per-term spend/clicks/CVR. Same filters as above. |
| Current quota usage and capacity per billable feature, plus the next refresh date. No arguments. |
| Paginated billable usage logs (token-consumption events). Filter by |
All data is scoped to the organization that owns the API key. Most tools are
read-only. The tools that change something are marked above; the ones that
cannot be undone also require an explicit confirm: true — see
Tools that change something.
Tools that change something
Six tools cannot be undone, so they require an explicit confirm: true
argument. Called without it, they change nothing and return a note asking the
assistant to confirm the cost with you first:
create_niche_dive,redive_niche— spend dive tokens (scales withnumberOfCompetitors).create_rank_radar— spends Search Term tokens (scales withnumberOfKeywords).generate_listing_copy— spends one AI Copywriter prompt per call.delete_niche,delete_rank_radar— destroy data permanently.
Check your remaining balance any time with get_quota.
create_rank_radar uses that first, unconfirmed call to preview the creation
against the API, so the note it comes back with can tell you something specific
rather than only the token cost — for instance that the product family you asked
for is already tracked by another of your Rank Radars, which would spend Tracked
Search Terms on it twice. The preview creates nothing and spends nothing, and a
warning never blocks the creation: two Rank Radars on one family is how you
track two different sets of search terms and keep separate statistics.
The other write tools — pause_rank_radar, resume_rank_radar and the three
*_rank_radar_search_terms tools — need no confirmation. They only move Daily
Tracked Keywords capacity, which is freed again when you pause, and each is
undone by its counterpart.
To skip the per-call confirmation (e.g. in an automated setup), set
DATADIVE_AUTO_CONFIRM_WRITES=true in your client config — then all six run
without confirm, deletes included.
None of the three is safe to retry — each call spends tokens again and
creates a separate dive / re-dive / Rank Radar, even with identical arguments. If
a call errors or times out, check get_dive_status / list_niches /
list_rank_radars for what already exists before calling again.
Dives are asynchronous. create_niche_dive returns a diveId and an
estimated completion time immediately; poll get_dive_status with that diveId
until it reports success, which carries the new nicheId you then feed to
list_niches, get_niche_keywords, and the other niche tools.
redive_niche refreshes a niche you already have rather than creating another
one, and it keeps the same nicheId — so rank radars and reports built on that
niche follow the refreshed data. It takes a mode:
same_competitors— re-dive the niche's current competitor set. Nothing else to supply; use it purely to pull in current sales, price and keyword data.discover— search for a fresh competitor set ofnumberOfCompetitorsASINs. Steer it withheroAsin(the seed to build around; defaults to the niche's highest-selling competitor, preferring one of your own ASINs),lockedAsins(kept no matter what discovery finds) andexcludedAsins(never selected).
⚠️ For
create_niche_dive,marketplaceuses full Amazon domain suffixes (com,co.uk,com.mx,co.jp, …) — e.g. the UK marketplace isco.uk, notuk.
Configuration
Env var | Required | Default | Notes |
| yes | — | Generate at https://2.datadive.tools/api-key |
| no |
| Override for staging |
| no |
| Set truthy to let every |
Troubleshooting
If a tool call returns an error message, it'll be one of these — each maps to a specific HTTP status from the DataDive API.
Message starts with… | What to do |
Authentication failed: your DATADIVE_API_KEY is invalid or expired | The key is wrong, deleted, or expired. Generate a new one at https://2.datadive.tools/api-key. |
Subscription is inactive or paused | Resume billing at https://2.datadive.tools — the API key is valid but the subscription isn't active. |
Quota exceeded / … quota exceeded | The subscription's quota for that billable feature (Dive tokens, Rank Radar tracked keywords, AI Copywriter prompts, …) is used up. The message names the feature, the usage, the next refresh date when there is one, and links to the subscription overview page where it can be raised. Don't retry until it has been. |
Forbidden | The key is valid but doesn't have access to that resource. Usually a niche/rank-radar that belongs to a different org. |
Rate limit exceeded | Wait a few seconds and retry. |
Bad request | Check the parameters — the message echoes the server's validation error (e.g., |
DataDive API error (5xx) | Transient backend issue. Try again; if it persists, contact support. |
Network error reaching … | Your machine can't reach |
If the server itself fails to start, look in your MCP client's log output:
DATADIVE_API_KEY environment variable is required— the env var isn't being passed through to the binary. Confirm your client config has it underenv(notargs), and that you've restarted the client after editing.
Privacy
The MCP server runs locally on your machine. It is a thin shim — every tool call becomes a single HTTPS request from your machine to
api.datadive.toolswith your API key as thex-api-keyheader.Your API key is stored only in your MCP client's config file (which you control). It is never sent anywhere else.
The server logs nothing on its own. Standard backend access logs at DataDive record per-request metadata (organization, route, status, latency) the same way any direct API call would.
Development
npm install
npm run build # tsup -> dist/index.js (with shebang)
npm test # vitest run
npm run typecheck # tsc --noEmit
npm run lint # eslintTest the binary end-to-end with the MCP Inspector:
DATADIVE_API_KEY=YOUR_API_KEY npx @modelcontextprotocol/inspector dist/index.jsReleasing
The repo uses Changesets:
npx changeset # add a changeset describing the change (patch/minor/major)
git commit -am "fix: ..."
git pushA "Version Packages" PR opens automatically. Merging it bumps the version, updates CHANGELOG.md, and publishes to npm with provenance.
Support
Issues: https://github.com/Data-Dive-Tools/datadive-mcp/issues
DataDive support: support@datadive.tools
License
MIT — see LICENSE.
Available Tools
32 toolsadd_rank_radar_search_termsAdd Search Terms to a Rank RadarADestructiveInspect
Use this to start tracking extra keywords on an existing Rank Radar, instead of creating a new one with create_rank_radar. New keywords are added to the niche and tracked from now on; any matching keyword that was previously paused is resumed. Each newly tracked keyword takes one Daily Tracked Keywords slot, and the call fails if the quota is exhausted — check get_quota first. Reversible with pause_rank_radar_search_terms, which frees the slots again, so it needs no confirm. Returns originBreakdown (where each submitted term ended up) and keywordToRankRadarKeywordIdMap, whose ids are what the pause/resume search-term tools take.
| Name | Required | Description | Default |
|---|---|---|---|
| rankRadarId | Yes | The Rank Radar UUID to add the search terms to (from `list_rank_radars`). | |
| searchTerms | Yes | The keywords to start tracking, 1–1000 per call. Must be unique. Amazon-ignored special characters (@, #, _, parentheses, …) are rejected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description explains meaningful behavioral details: newly added keywords are tracked from now on, previously paused matching keywords are resumed, each keyword consumes a Daily Tracked Keywords slot, and the operation is reversible via `pause_rank_radar_search_terms`. It even addresses why no confirmation is needed, which is valuable context for agent decision-making.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place: purpose, behavioral effects, quota constraint, reversibility, and return values are all covered without filler. The most important scoping decision (existing radar vs new radar) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a state-changing tool with no output schema, the description is unusually complete. It explains failure conditions, quota implications, reversibility, and what the return fields mean, including how the returned ids connect to sibling pause/resume tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds behavioral semantics not present in the schema: each submitted keyword occupies a quota slot, matching paused keywords get resumed, and the returned ids feed pause/resume tools. This enriches the agent's understanding of what the parameters actually cause.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'start tracking extra keywords on an existing Rank Radar.' It explicitly distinguishes itself from `create_rank_radar`, so an agent can immediately tell this is for extending an existing radar rather than creating a new one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states precisely when to use this tool ('on an existing Rank Radar, instead of creating a new one') and names the relevant alternatives (`create_rank_radar`, `pause_rank_radar_search_terms`). It also gives an actionable precondition: check `get_quota` first because the call fails when quota is exhausted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_niche_diveCreate a Niche DiveADestructiveInspect
Use this to start new niche research from a seed ASIN. ⚠️ Spends dive tokens (cost scales with numberOfCompetitors) and cannot be undone — set confirm: true only after the user approves the cost. Not safe to retry: each call spends tokens again and starts a separate dive — if a call errors or times out, poll get_dive_status (or check list_niches) instead of re-calling. The dive runs asynchronously: this returns immediately with a diveId and an estimatedCompletionDate. Poll get_dive_status with that diveId until it reports success (which carries the new nicheId for use with list_niches, get_niche_keywords, etc.). Requires marketplace, asin, and numberOfCompetitors (min 2).
| Name | Required | Description | Default |
|---|---|---|---|
| asin | Yes | The seed ASIN to start the dive from (e.g. B08N5WRWNW). Competitors are built around it. | |
| confirm | No | Must be true to proceed — creating a dive spends dive tokens. Confirm the cost with the user first. | |
| marketplace | Yes | Amazon marketplace of the seed ASIN. Note these are full domain suffixes: com, ca, co.uk, com.mx, in, fr, de, es, it, co.jp (e.g. UK is `co.uk`, not `uk`). | |
| numberOfCompetitors | Yes | How many competitors to analyze (minimum 2). More competitors = deeper niche but more dive tokens. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true, and the description substantially enriches this: token spend that scales with numberOfCompetitors, 'cannot be undone,' non-idempotency ('each call spends tokens again and starts a separate dive'), and the async contract (immediate diveId + estimatedCompletionDate, poll until success carries nicheId). These behavioral details go far beyond what annotations alone convey and are exactly what an agent needs before invoking a paid, irreversible operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Roughly 130 words for a tool that is destructive, paid, non-idempotent, and asynchronous — every sentence has a distinct job, and the purpose is front-loaded. It is efficient but slightly dense; the retry sentence bundles token cost, idempotency, and error-recovery alternatives into one long clause. Cleaner separation of the warnings would earn a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the full burden of explaining the return contract, and it does: immediate diveId + estimatedCompletionDate, polling via get_dive_status, and the nicheId delivered on success for use with list_niches, get_niche_keywords, etc. Combined with cost, confirmation, and retry warnings, nothing an agent needs to call this tool safely is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds genuine cross-parameter semantics on top: numberOfCompetitors drives cost, and confirm must be true only after the user approves that cost. It also reinforces the required trio (marketplace, asin, numberOfCompetitors). It wisely does not duplicate the marketplace enum gotchas, which the schema already documents thoroughly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb and resource: 'start new niche research from a seed ASIN.' The 'new' qualifier implicitly separates it from the re-dive sibling (redive_niche), and the polling workflow content distinguishes it from the read-only status tools. An agent can tell exactly what this tool creates and from what input.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use ('start new niche research') and names concrete alternatives with conditions: 'if a call errors or times out, poll get_dive_status (or check list_niches) instead of re-calling.' It also specifies the confirmation prerequisite — set confirm: true only after user cost approval. This is precisely the guidance needed to prevent the tool's dominant failure mode (duplicate paid dives).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_niche_dive_from_competitors_listCreate a Niche Dive from a Competitor ListADestructiveInspect
Use this when the user already knows which products belong in the niche — e.g. they list competitor ASINs, or picked them from search results — and wants niche research on exactly those. Unlike create_niche_dive, which discovers competitors around one seed ASIN, this builds the niche from the given ASINs only (2-200). ⚠️ Spends dive tokens for every ASIN and cannot be undone — set confirm: true only after the user approves the cost. Not safe to retry: each call spends tokens again and starts a separate dive — if a call errors or times out, poll get_dive_status (or check list_niches) instead of re-calling. Fails without spending tokens when the ASIN count is over the plan's limit, when the account is at its niche limit, or when Amazon product data cannot be found for enough of the ASINs. The dive runs asynchronously: this returns a diveId and an estimatedCompletionDate; poll get_dive_status with the diveId until it reports success, which carries the new nicheId.
| Name | Required | Description | Default |
|---|---|---|---|
| asins | Yes | The exact competitor ASINs to build the niche from, 2 to 200, each once. No other competitors are added. | |
| confirm | No | Must be true to proceed — this dive spends dive tokens for every ASIN. Confirm the cost with the user first. | |
| marketplace | Yes | Amazon marketplace where the ASINs are listed. Full domain suffixes: com, ca, co.uk, com.mx, in, fr, de, es, it, co.jp (e.g. UK is `co.uk`, not `uk`). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only flag destructiveHint=true; the description adds substantial context the annotations cannot: tokens are spent per ASIN, the action is irreversible, it is NOT safe to retry (each call starts a separate dive and spends again), and the correct recovery is polling `get_dive_status`/`list_niches`. It further enumerates the no-cost failure modes (over plan limit, account niche limit, insufficient Amazon data) and the async return contract.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the usage condition and the sibling contrast, then warnings. Every sentence carries unique operational information (cost, irreversibility, retry hazard, failure modes, async polling), though the description is dense enough that it approaches the upper end of what an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, token-spending, asynchronous tool with no output schema, the description covers the full lifecycle: cost warning, retry prohibition, recovery path, failure cases, and the returned `diveId`/`estimatedCompletionDate` plus polling loop to `success`/`nicheId`. Nothing an agent needs to invoke it safely is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all three parameters already carry inline descriptions covering the 2-200 ASIN bound, the `confirm` cost-approval semantics, and the marketplace enum domain. The description largely restates these bounds rather than adding new parameter meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a precise verb+resource ('builds the niche from the given ASINs only') and explicitly distinguishes itself from the sibling `create_niche_dive`, which 'discovers competitors around one seed ASIN'. An agent can route between the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the exact triggering condition ('when the user already knows which products belong in the niche — e.g. they list competitor ASINs, or picked them from search results') and names the alternative for the other case. It also states the confirmation prerequisite, so the when-to-use decision is fully specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_rank_radarCreate a Rank RadarADestructiveInspect
Use this to start tracking organic and sponsored keyword rankings for an ASIN within a niche. ⚠️ Spends Search Term tokens (cost scales with numberOfKeywords) and cannot be undone — set confirm: true only after the user approves the cost. Not safe to retry: each call spends tokens again and creates a separate Rank Radar — if a call errors or times out, check list_rank_radars instead of re-calling. The first call previews the creation and may return warnings alongside the cost note — for example that this product family is already tracked by another Rank Radar. Show every warning message to the user verbatim, before asking them to confirm; do not summarise it or decide on their behalf. A warning never blocks creation. Returns the new rankRadarId; read its data later with get_rank_radar_data. Requires asin, numberOfKeywords (min 1), and a nicheId from list_niches.
| Name | Required | Description | Default |
|---|---|---|---|
| asin | Yes | The ASIN to track keyword rankings for. | |
| confirm | No | Must be true to proceed — creating a Rank Radar spends Search Term tokens. Confirm the cost with the user first. | |
| nicheId | Yes | The niche this Rank Radar belongs to. Get one from `list_niches`. | |
| numberOfKeywords | Yes | How many keywords to track (minimum 1). More keywords = broader tracking but more Search Term tokens. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations. It discloses that the operation spends Search Term tokens, that cost scales with numberOfKeywords, that it cannot be undone, that it is not safe to retry, that the first call is a preview that may return warnings, that warnings must be shown verbatim, and that a warning never blocks creation. The annotations already declare destructiveHint=true, but the description adds critical context about token cost, retry safety, and the warning-handling protocol. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-organized: it front-loads the purpose, then the critical warning, then the retry guidance, then the warning-handling protocol, then the return value and prerequisites. Every sentence earns its place, though the length is substantial. It could be slightly tightened, but the density is justified given the high-stakes nature of the operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with destructiveHint=true, no output schema, and 4 parameters, the description is remarkably complete. It covers prerequisites (nicheId from list_niches), cost behavior, retry safety, warning handling, return value (rankRadarId), and follow-up tool (get_rank_radar_data). An agent has everything needed to invoke this correctly and safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all four parameters. The description adds meaningful context beyond the schema: it explains the cost implication of numberOfKeywords, the confirmation requirement for confirm, the source of nicheId (list_niches), and the minimum for numberOfKeywords. It doesn't add syntax details for asin, but the schema already covers that. This is a strong complement to the schema, though not a full 5 because the schema already does most of the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('start tracking'), a specific resource ('organic and sponsored keyword rankings for an ASIN within a niche'), and clearly distinguishes this from sibling tools like list_rank_radars, get_rank_radar_data, and delete_rank_radar. The title and description align, and the scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool (to start tracking rankings), and provides clear exclusions: 'Not safe to retry: each call spends tokens again and creates a separate Rank Radar — if a call errors or times out, check list_rank_radars instead of re-calling.' It also names the prerequisite source for nicheId (list_niches) and the follow-up tool (get_rank_radar_data). This is explicit when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_nicheDelete a NicheADestructiveInspect
Use this to permanently remove a niche the user no longer needs. ⚠️ Deletes the niche and everything attached to it — keywords, competitors, all dives and diveboxes — and cannot be undone; the dive tokens already spent on it are NOT refunded. Set confirm: true only after the user approves. A niche used by any Rank Radar cannot be deleted: the call fails with a conflict, so delete or archive those rank radars first (list_rank_radars with the nicheId filter shows them).
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must be true to proceed — deleting a niche destroys its keywords, competitors and dive history permanently. Confirm with the user first. | |
| nicheId | Yes | The niche to delete. Get one from `list_niches`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Going well beyond the destructiveHint annotation, the description discloses the full blast radius (keywords, competitors, all dives and diveboxes), irreversibility, that spent dive tokens are NOT refunded, the confirm gate, and the conflict failure mode. Every consequential behavior an agent must surface to a user is covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each earning its place: purpose, cascading consequences plus token policy, the confirm gate, and the conflict precondition with resolution. The warning is front-loaded and the structure leads from action to consequence to safeguard to edge case.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive operation with no output schema, everything needed to call it safely is present: success effects, irreversibility, financial impact, the required confirmation flag, the failure mode, and the resolution path. There is no meaningful gap an agent would need to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both nicheId and confirm already carry thorough schema descriptions, including 'Confirm with the user first.' The description's 'Set `confirm: true` only after the user approves' reiterates schema semantics rather than adding new parameter-level meaning, so the high-coverage baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('permanently remove a niche'), making the operation unambiguous. It also inherently differentiates from siblings: it is the destructive counterpart to read-only tools like list_niches and get_niche_keywords, and targets a different resource than delete_rank_radar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly frames when to use it ('a niche the user no longer needs') and states a hard precondition: a niche used by any Rank Radar cannot be deleted. It also names the exact remedy and sibling tool to consult ('delete or archive those rank radars first (`list_rank_radars` with the `nicheId` filter shows them)').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_rank_radarDelete a Rank RadarADestructiveInspect
Use this to permanently remove a Rank Radar and all of its keyword ranking history. ⚠️ Cannot be undone — there is no restore endpoint; set confirm: true only after the user approves. It does free the Daily Tracked Keywords quota those keywords held. Deleted Rank Radars are what list_rank_radars returns for status: ARCHIVED. If the user only wants to stop tracking for a while and keep the history — or asks to 'archive' the Rank Radar, which is what the DataDive API calls pausing — use pause_rank_radar instead: it frees the same quota and is reversible with resume_rank_radar.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must be true to proceed — deleting a Rank Radar destroys its ranking history permanently. Confirm with the user first. | |
| rankRadarId | Yes | The Rank Radar UUID to delete (from `list_rank_radars`). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint, but the description adds valuable behavioral context: no restore endpoint, effect on Daily Tracked Keywords quota, and the relationship to list_rank_radars status: ARCHIVED. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place: action, irreversibility, approval condition, quota effect, status mapping, and alternative tool. Slightly longer than strictly necessary but front-loaded and well structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with no output schema, the description covers prerequisites, irreversibility, side effects, alternative behavior, and response expectations are not needed. An agent has everything needed to select and correctly invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains confirm and rankRadarId. The description repeats the same semantics ('only after the user approves', 'from list_rank_radars') without adding new parameter-level detail, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'permanently remove a Rank Radar and all of its keyword ranking history.' This clearly distinguishes from pausing/archiving by explicitly contrasting with pause_rank_radar and explaining the ARCHIVED status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit usage guidance: use when permanent deletion with history removal is intended, and explicitly names pause_rank_radar as the alternative when the user wants to stop tracking while keeping history or asks to 'archive'. Also gives the approval precondition: set confirm only after user approves.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_listing_copyGenerate Listing Copy for a NicheADestructiveInspect
Use this to draft an optimised Amazon listing — title, bullets and description — from a niche's keyword research and the seller's current listing. It writes text only: nothing is published to Amazon, and the user still has to paste the result into Seller Central. ⚠️ Spends one AI Copywriter prompt from the quota per call and cannot be undone — set confirm: true only after the user approves. Not safe to retry: each call spends another prompt, so if a call errors or times out, poll get_listing_copy_generation_status instead of re-calling. Runs asynchronously: returns a generationId — poll get_listing_copy_generation_status with it until the status is complete.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must be true to proceed — each generation spends one AI Copywriter prompt from the quota. Confirm the cost with the user first. | |
| nicheId | Yes | The niche whose keyword data the copy is written from. Get one from `list_niches`. | |
| strategy | Yes | Which generation strategy to use. `cosmo` targets Amazon's COSMO relevance model, `ranking-juice` optimises for DataDive's ranking-juice score, `nlp` writes for keyword coverage, and `cosmo-rufus` targets COSMO plus the Rufus shopping assistant. Ask the user if they have no preference. | |
| currentListing | Yes | The seller's existing listing to rewrite, as an object — e.g. `{ "title": "...", "description": "...", "bullets": ["...", "..."] }`. Pass what the user has; it is the starting point the generated copy builds on. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that each call consumes one AI Copywriter prompt irreversibly, is asynchronous, returns a generationId, and should not be retried on failure. This goes well beyond the destructiveHint=true annotation by specifying the actual side effect (quota consumption) and the safe recovery path.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence carries a distinct operational fact: purpose, non-publishing, quota cost, no-retry rule, async return, and polling procedure. The warning is front-loaded and the retry/polling guidance is placed before the async note, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and a destructive quota side effect, the description covers the full lifecycle: confirm cost, pass required inputs, get generationId, poll status until complete, and avoid retries. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents nicheId source, strategy enum meanings, and currentListing structure. The description adds only an instruction to ask the user for strategy preference and reminds that the listing is drafts only, which is already implicit in the schema; no new syntactical parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence specifies the verb ('draft'), the resource ('an optimised Amazon listing — title, bullets and description'), and the input ('from a niche's keyword research and the seller's current listing'). It also distinguishes itself from the status-polling sibling by explaining it returns a generationId and that get_listing_copy_generation_status should be used for monitoring.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use (drafting from a niche's keyword research and current listing), and when not to re-call on error/timeout, directing to poll get_listing_copy_generation_status. It also instructs to set confirm:true only after user approval, and to ask the user for strategy preference if unknown.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_asin_inventory_distributionGet Per-Fulfillment-Center Inventory Distribution for an ASINARead-onlyInspect
Use this when the user asks about inventory levels, stock by fulfillment center, or where their units are sitting across Amazon's fulfillment network for a specific ASIN. Requires the Amazon sellerId (from list_seller_profiles or the user's DataDive Connections page at https://2.datadive.tools), the marketplace code, and the ASIN. Returns totalSellableUnits and a per-FC distribution array (fc, state, availableStock, availableStockPercentage). lastUpdatedAt may be null when no successful inventory ingestion has occurred in the last 30 days.
| Name | Required | Description | Default |
|---|---|---|---|
| asin | Yes | Amazon Standard Identification Number (10 uppercase alphanumeric characters, e.g. B08XYZ1234). | |
| sellerId | Yes | Amazon seller account ID as connected to DataDive. Get it from `list_seller_profiles`, or find it on the Connections page at https://2.datadive.tools. | |
| marketplace | Yes | Amazon marketplace code, e.g. "com" for amazon.com or "co.uk" for amazon.co.uk. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already include readOnlyHint=true, and the description adds context about the return payload (totalSellableUnits, distribution array with fields) and the `lastUpdatedAt` null condition. This goes beyond the annotation by explaining output semantics and edge cases, though it doesn't discuss pagination or rate limits, which are not relevant for a small read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured paragraph of moderate length. It front-loads the when-to-use trigger, then states requirements and output. Every sentence earns its place, with no redundant or vague phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description explains the return structure (distribution array with fc, state, availableStock, availableStockPercentage) and the nullability of lastUpdatedAt. It also mentions prerequisites for sellerId, making the tool self-sufficient for a user to invoke correctly. This is complete for a simple read-only inventory distribution tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all three required parameters (asin, sellerId, marketplace) including patterns and enums. The description repeats the parameter names but adds no new meaning beyond what the schema already provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with specific verb+resource: 'get inventory distribution' per ASIN. It explicitly distinguishes from siblings by focusing on inventory levels and fulfillment center stock, which no sibling covers. The trigger phrases ('asks about inventory levels, stock by fulfillment center') make the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: 'Use this when the user asks about inventory levels...' It also lists required input sources (sellerId from list_seller_profiles or Connections page). However, it doesn't mention when not to use this tool or suggest alternatives, so it misses the 'when-not/alternatives' element for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dive_statusGet Niche Dive StatusARead-onlyInspect
Use this to poll a niche dive started with create_niche_dive, create_niche_dive_from_competitors_list or redive_niche until it finishes. Returns one of three shapes keyed by status: in_progress (with estimatedCompletionDate), success (with the nicheId plus tokensUsed/tokensLeft), or error (with an error message). On success, use the nicheId with list_niches, get_niche_keywords, get_niche_competitors, etc. (for a re-dive it is the same niche you passed in, now carrying refreshed data). Re-poll periodically — dives can take minutes; the estimatedCompletionDate hints at when to check.
| Name | Required | Description | Default |
|---|---|---|---|
| diveId | Yes | The dive identifier returned by `create_niche_dive`, `create_niche_dive_from_competitors_list` or `redive_niche`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, so safety is covered. Beyond that, the description discloses the three return shapes keyed by status, the timing behavior (dives take minutes), the estimatedCompletionDate hint, and the re-dive semantics (same nicheId, refreshed data), which is valuable operational context for a polling tool. It stops short of mentioning any rate limits or quota behavior, so not a full 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core instruction and organized by return status, with every sentence carrying load (workflow, return shapes, follow-ups, cadence). It is somewhat dense but not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by describing the three response shapes and how to use the nicheId downstream. Nothing an agent needs to poll and act on the result is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter (diveId) is fully described in the schema, including its source tools. The description adds no syntax or format detail beyond what the schema already provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (poll), resource (a niche dive), and ties it to the exact producer tools (create_niche_dive, create_niche_dive_from_competitors_list, redive_niche), distinguishing it clearly from those siblings. An agent can immediately tell this is the status-check endpoint rather than a dive-creation tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It says explicitly when to use it ('poll ... until it finishes'), names the predecessor tools, gives re-polling cadence guidance ('dives can take minutes', use estimatedCompletionDate to know when to check), and routes to the correct follow-up tools on success. The full workflow context is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_listing_copy_generation_statusGet Listing Copy Generation StatusARead-onlyInspect
Use this to poll a listing-copy draft started with generate_listing_copy until it finishes. Returns one of three shapes keyed by status: generating (still running — poll again in a few seconds), complete (with result, carrying the generated title, bullets, description, itemHighlights and its rankingJuice score), or failed (with an error message). Polling is free — it does not spend another AI Copywriter prompt, so always poll rather than re-calling generate_listing_copy.
| Name | Required | Description | Default |
|---|---|---|---|
| nicheId | Yes | The niche the generation was started for. | |
| generationId | Yes | The `generationId` returned by `generate_listing_copy`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses that polling is free and does not consume another AI Copywriter prompt, which is critical behavioral context. It also explains the three distinct response shapes and their meanings, making the tool's runtime behavior transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the purpose and polling loop, the response shapes, and the cost-saving guidance. The most important information is front-loaded, and there is no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description fully compensates by detailing all three status shapes and the fields carried in the result. The required parameters are clearly tied to the generation workflow. Nothing needed to invoke or interpret this tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both nicheId and generationId already explained in the schema. The description reinforces that generationId comes from generate_listing_copy but does not add substantial new parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific action ('poll') against a specific resource ('listing-copy draft') and clearly distinguishes it from generate_listing_copy. It also enumerates the possible statuses, leaving no ambiguity about what the tool returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool ('to poll a listing-copy draft started with generate_listing_copy'), when to poll again ('generating' status), and when not to re-call the sibling ('always poll rather than re-calling generate_listing_copy'). This is model behavior for usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_niche_competitorsGet Competitors and Niche StatisticsARead-onlyInspect
Use this for competitor ASINs, product titles, BSR, sales/revenue benchmarks, or niche opportunity scoring. Retrieves the list of Competitors within the specified Niche along with Niche statistics. For the Niche: keyword statistics, opportunity evaluation, benchmark median values, and overall competitor strength assessment. For each Competitor: ASIN, product title, BSR, category and full category tree, sales, revenue, ratings, reviews, price, number of variations, image URL, total Ranking Juice, and ranking data. BSR supports ranking Competitors by sales position within mentioned category. For the Ranking Juice breakdown by title, bullets and description, use get_ranking_juice.
| Name | Required | Description | Default |
|---|---|---|---|
| nicheId | Yes | The unique identifier of the Niche (from `list_niches`). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and the description reinforces this with the safe retrieval verb. It adds useful behavioral detail beyond annotations, such as BSR supporting ranking by sales position and the boundary with get_ranking_juice, though it does not mention pagination, limits, or data freshness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a use statement and uses a compact field-list format for returned data. There is some redundancy between the opening use-case list and the later enumeration of outputs, but each sentence contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description thoroughly enumerates both niche-level statistics and competitor-level fields, so an agent knows what to expect. The single required parameter and read-only annotation keep complexity low; minor omissions like pagination or response shape do not block correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the only parameter, nicheId, is already well documented in the schema including that it comes from list_niches. The description adds nothing new about the parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with explicit use cases (competitor ASINs, product titles, BSR, sales/revenue benchmarks, niche opportunity scoring) and names the exact resource: Competitors within a specified Niche. It also distinguishes itself from get_ranking_juice by redirecting users who need ranking juice breakdowns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use this for...' gives clear invocation contexts, and the description explicitly routes ranking juice breakdowns to get_ranking_juice. However, it does not contrast with get_niche_keywords even though the output includes 'keyword statistics', so the sibling routing is not fully exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_niche_keywordsGet Master Keyword List for a NicheARead-onlyInspect
Use this when the user asks about keywords, search terms, or search volume for a niche. Retrieves the master keyword list for the specified Niche — the relevant search terms monitored for ranking and performance metrics. For each keyword, returns search volume, relevancy (numeric score or "Outlier"), and competitor ASIN organic ranks (asinRanks: { ASIN -> rank | null }). Also returns the latestResearchDate.
| Name | Required | Description | Default |
|---|---|---|---|
| nicheId | Yes | The unique identifier of the Niche (from `list_niches`). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint: true, and the description adds meaningful behavioral context by detailing the return payload: search volume, relevancy (numeric or 'Outlier'), asinRanks mapping, and latestResearchDate. This clarifies the data structure and expected content beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured with a usage trigger, a clear outcome statement, and a compact list of return fields. Every sentence earns its place; no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by describing the returned data fields and a sample structure for asinRanks. It covers the core invocation needs for a one-parameter tool, though it could elaborate on interpreting 'Outlier' or relevancy scores, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for nicheId (from list_niches). The tool description references 'the specified Niche' but adds no new meaning beyond the schema, which already explains the parameter's origin and purpose. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific usage trigger ('when the user asks about keywords, search terms, or search volume for a niche') and clearly states the tool retrieves the master keyword list. It distinguishes itself from siblings like get_niche_competitors or get_niche_roots by focusing on keywords and search volume.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool ('Use this when the user asks about keywords, search terms, or search volume for a niche'). It does not mention when not to use it or name alternative tools, but the direct trigger provides strong guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_niche_rootsGet Keyword Roots for a NicheARead-onlyInspect
Use this when the user wants to find the highest-impact words across a niche's keywords, asks about 'keyword roots', or wants to prioritize terms for a listing. Retrieves the keyword lexical roots for the Niche — individual words or word-combinations extracted from the Master Keyword List (e.g. 'bluetooth headphones' yields roots 'bluetooth', 'headphones', 'bluetooth headphones'). Returns roots and normalizedRoots tables, each item with root, frequency (how many keywords contain it), broadSearchVolume (summed search volume of those keywords), and broadSearchVolumeRatio (0-1, relative to the top root), plus the per-keyword breakdowns and latestResearchDate.
| Name | Required | Description | Default |
|---|---|---|---|
| nicheId | Yes | The unique identifier of the Niche (from `list_niches`). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true annotation already covering the safety profile, the description adds valuable behavioral context by detailing the output structure ('roots' and 'normalizedRoots' tables) and the meaning of each field (frequency, broadSearchVolume, broadSearchVolumeRatio). It also explains the extraction logic via an example, going beyond what annotations provide. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: first the usage triggers, then the operation, then the detailed output fields. The example is illustrative and every sentence provides necessary information without redundancy. It is appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Since there is no output schema, the description takes responsibility for explaining return values. It thoroughly describes the tables (roots, normalizedRoots), each field (root, frequency, broadSearchVolume, broadSearchVolumeRatio), and additional metadata (per-keyword breakdowns, latestResearchDate). It also covers usage context, making it self-sufficient for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully documents the only parameter nicheId (including the note 'from list_niches'), giving 100% schema coverage. The tool description does not add further semantic detail about the parameter itself, so the baseline score of 3 applies despite the description's broader context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Retrieves the keyword lexical roots for the Niche' and provides a specific example ('bluetooth headphones' yields 'bluetooth', 'headphones', 'bluetooth headphones'). It distinguishes itself from sibling tools like get_niche_keywords by focusing on derived roots rather than raw keywords, and ties to user intent ('highest-impact words', 'prioritize terms').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description opens with explicit 'Use this when...' and lists three concrete triggers: 'find the highest-impact words across a niche's keywords', 'asks about keyword roots', and 'wants to prioritize terms for a listing'. However, it does not specify when not to use the tool or mention alternative tools (e.g., get_niche_keywords), so it lacks the 'when-not' or alternatives detail needed for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_quotaGet Quota UsageARead-onlyInspect
Use this when the user asks how much quota or how many tokens they have left, or before creating a Niche Dive or Rank Radar to check remaining headroom. Returns current quota usage and capacity for each billable feature — DIVED_ASINS (Dive tokens), RANK_RADAR_KEYWORDS (tracked keywords), PRODUCT_BRIEF_ASINS, and AI_COPYWRITER_PROMPTS — each with used and capacity (null when unlimited / not applicable), plus nextRefreshDate (ISO-8601 timestamp of the next quota reset, or null). Takes no arguments.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as readOnlyHint=true, and the description adds meaningful context beyond that: it details the return structure (used/capacity per feature, null for unlimited, nextRefreshDate) and confirms the tool returns data without side effects. This is useful behavioral disclosure for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence. It front-loads the usage trigger before explaining the response format. Every clause adds value—feature names, null semantics, and the ISO timestamp—without redundancy. No filler or unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with no parameters and no output schema, the description is complete: it explains exactly what the tool returns, including the specific fields and their possible null values. It gives the agent everything needed to invoke and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters and the schema is empty. The description explicitly states 'Takes no arguments,' which confirms the parameterless nature and matches the schema exactly. For a no-parameter tool, the baseline is 4, and the description fulfills this.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'get' with resource 'quota usage and capacity' and enumerates the exact billable features (DIVED_ASINS, RANK_RADAR_KEYWORDS, etc.). This clearly distinguishes it from all sibling tools, none of which mention quota.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit usage triggers: 'when the user asks how much quota or how many tokens they have left' and 'before creating a Niche Dive or Rank Radar to check remaining headroom.' This is clear context for when to use, though it does not mention alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ranking_juiceGet Ranking Juices for a NicheARead-onlyInspect
Use this when the user asks 'how do I rank higher', 'what's my ranking juice', or wants listing-optimization guidance. Retrieves the Ranking Juices for each Competitor within the specified Niche. Ranking Juice is DataDive's proprietary metric identifying the key factors driving search-ranking success for each Competitor's listing. Returns currentListing and optimizedListing breakdowns (rankingJuice + per-property contributions: title, bullets, description) plus per-competitor listing scores and the latestResearchDate.
| Name | Required | Description | Default |
|---|---|---|---|
| nicheId | Yes | The unique identifier of the Niche (from `list_niches`). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes safety, and the description adds substantial context by detailing the return structure: currentListing/optimizedListing breakdowns, per-property contributions, per-competitor scores, and latestResearchDate. It explains the proprietary 'Ranking Juice' concept, which is valuable beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is composed of two efficiently structured sentences, with the usage guidance front-loaded. Every sentence contributes unique information—trigger conditions, resource, return details, and metric definition—without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description fully explains what the tool returns, including the nested breakdowns and research date. It also provides sufficient context for an agent to understand when to invoke it, making the description complete for a single-parameter read-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter nicheId, and the schema already describes it as a unique identifier from list_niches. The description adds no further parameter-specific meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Retrieves') plus resource ('Ranking Juices for each Competitor within the specified Niche') and defines the proprietary metric. It also provides user-intent triggers ('how do I rank higher', 'what's my ranking juice') that distinguish this from sibling tools like get_niche_keywords or get_niche_competitors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The first sentence explicitly directs when to use the tool: 'Use this when the user asks... or wants listing-optimization guidance.' This gives clear context for selection without ambiguity, even though it doesn't name alternative tools directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_rank_radar_dataGet Keyword Rankings for a Rank RadarARead-onlyInspect
Use this to analyze keyword ranking trends over time. Requires startDate and endDate (yyyy-mm-dd), at most 90 days apart. Retrieves historical keyword ranking data for the specified Rank Radar within the date range. Without currentPage and pageSize it returns every active keyword in one result. To read one page instead — faster for large Rank Radars — pass currentPage and/or pageSize (max 100) and continue with currentPage + 1 while hasNext is true. The response carries currentPage, pageSize, total, lastPage, hasNext and hasPrev; total is the Rank Radar's active keyword count. Paused keywords are not included. Each keyword has id, keyword, searchVolume, relevancy, ranks (per-day { date, organicRank, sponsoredRank, impressionRank }), and any highlight annotations. A rank of 101 means the product was not in the top 100 results that day. For PPC metrics use get_rank_radar_ppc_data; for Search Query Performance use get_rank_radar_sqp_data. Use after list_rank_radars to discover a rankRadarId.
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | Yes | End date of the range, yyyy-mm-dd (e.g. 2024-04-26). Must be on or after startDate, and at most 90 days after it. | |
| pageSize | No | Keywords per page (max 100). Defaults to 20. | |
| startDate | Yes | Start date of the range, yyyy-mm-dd (e.g. 2024-03-26). | |
| currentPage | No | Page of keywords, 1-indexed. Defaults to 1. | |
| rankRadarId | Yes | The Rank Radar UUID (from `list_rank_radars`). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint, but the description goes well beyond that: the 90-day date-range cap, that paused keywords are excluded, that rank 101 means outside the top 100, the pagination termination rule (hasNext), and the full response field list. This is rich behavioral context that annotations do not cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and constraints, and nearly every sentence carries useful information. It is somewhat dense and long, but the content is largely non-redundant rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating response fields (currentPage, pageSize, total, lastPage, hasNext, hasPrev) and the per-keyword shape (ranks, searchVolume, relevancy, highlights), so an agent knows exactly what it gets back.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, yet the description adds real meaning about how currentPage/pageSize interact and the max of 100. However, it claims omitting both returns 'every active keyword in one result,' which sits awkwardly against the schema's stated pageSize default of 20 — a minor inconsistency that costs it a point.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Retrieves historical keyword ranking data for the specified Rank Radar') and explicitly names the sibling tools for adjacent data (get_rank_radar_ppc_data, get_rank_radar_sqp_data), so an agent can disambiguate without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use context, the prerequisite workflow ('Use after list_rank_radars to discover a rankRadarId'), the alternative tools for PPC and SQP metrics, and the condition that selects paginated vs unpaginated reads.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_rank_radar_ppc_dataGet PPC Data for a Rank RadarARead-onlyInspect
Use this when the user asks about advertising (Sponsored Products) performance for the keywords of a Rank Radar. Requires startDate and endDate (yyyy-mm-dd), at most 90 days apart; 30 days or less keeps it fast. Each keyword's metrics are aggregated over the range: sponsoredRank (median; 101 means not in the top 100 sponsored results), impressionRank and impressionRankShare; how many exact, phrase, broad and auto campaigns target it; organicSales, ppcSales, ppcSpend, costPerClicks, clickThroughRate, conversionRate, totalClicks, totalImpressions, totalOrders and acos. Metrics are null or 0 when the seller runs no ads on a keyword. Set includeCampaigns for the per-campaign breakdown. Results are paged by keyword: data holds one page, and the response carries currentPage, pageSize, total, lastPage, hasNext and hasPrev. total is the Rank Radar's active keyword count; to read every keyword, call again with currentPage + 1 while hasNext is true, using pageSize 100 for large Rank Radars. Paused keywords are not included. Each call counts toward API usage and is rate limited (about 60 requests/minute). For the seller's campaigns as a whole, use list_ppc_campaigns. Use after list_rank_radars to discover a rankRadarId.
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | Yes | End date of the range, yyyy-mm-dd (e.g. 2024-04-26). Must be on or after startDate, and at most 90 days after it. | |
| pageSize | No | Keywords per page (max 100). Defaults to 20. | |
| startDate | Yes | Start date of the range, yyyy-mm-dd (e.g. 2024-03-26). | |
| currentPage | No | Page of keywords, 1-indexed. Defaults to 1. | |
| rankRadarId | Yes | The Rank Radar UUID (from `list_rank_radars`). | |
| includeCampaigns | No | When true, each keyword also carries `campaigns`: the per-campaign/ad-group breakdown (campaign and ad group name, match type, targeting, spend, sales, clicks, impressions, orders, CPC, CTR, CVR, ACOS). Defaults to false; leave it off unless the user asks which campaigns drive a keyword. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true, and the description goes well beyond that: it discloses the 90-day range cap and that <=30 days stays fast, null/0 semantics when a seller runs no ads, paused keywords being excluded, rate limiting (~60 req/min), that each call counts toward API usage, and full pagination mechanics. This is rich behavioral context layered on top of the safety annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The passage is long but front-loaded with the trigger and densely informative, with each sentence carrying constraint, semantics, or pagination detail. Slightly heavy for a single block, but nearly every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description compensates by enumerating the returned metrics, explaining null/0 cases, and detailing pagination fields (currentPage, pageSize, total, hasNext, hasPrev). Combined with rate-limit and alternative-tool guidance, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so a baseline of 3 applies, but the description adds genuine meaning: it frames startDate/endDate with the 90-day/30-day constraint, explains includeCampaigns' purpose and when to enable it, and recommends pageSize 100 plus currentPage+1 paging for large Radars. It goes beyond restating schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('advertising (Sponsored Products) performance for the keywords of a Rank Radar') and scopes it to the keywords of a specific Rank Radar, which distinguishes it from the sibling list_ppc_campaigns. An agent can tell exactly what it returns without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Opens with explicit trigger ('Use this when the user asks about advertising performance for the keywords of a Rank Radar'), names the contrasting alternative ('For the seller's campaigns as a whole, use list_ppc_campaigns'), and gives the prerequisite ('Use after list_rank_radars to discover a rankRadarId'). When-to-use, when-not, and ordering are all covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_rank_radar_sqp_dataGet Search Query Performance for a Rank RadarARead-onlyInspect
Use this when the user asks how shoppers search, click, add to cart and buy for the keywords of a Rank Radar — Amazon's Search Query Performance (SQP) data, from Brand Analytics. Requires startDate and endDate (yyyy-mm-dd), at most 90 days apart; 30 days or less keeps it fast. Each keyword's metrics are aggregated over the range: searchQueryVolume and searchQueryScore; impressions, clicks, cart adds and purchases, each as the total across all sellers (*TotalCount), this ASIN family's count (*AsinCount) and its share (*AsinShare); click, cart-add and purchase rates; and ctr/cvr for the market (*Total) and for this ASIN family (*Asin). numberOfDaysWithData says how many days of the range had SQP data; metrics are null when there is none, which is normal for low-volume keywords, recent dates (Amazon publishes SQP with a delay) and sellers without Brand Analytics. Results are paged by keyword: data holds one page, and the response carries currentPage, pageSize, total, lastPage, hasNext and hasPrev. total is the Rank Radar's active keyword count; to read every keyword, call again with currentPage + 1 while hasNext is true, using pageSize 100 for large Rank Radars. Paused keywords are not included. Each call counts toward API usage and is rate limited (about 60 requests/minute). Use after list_rank_radars to discover a rankRadarId.
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | Yes | End date of the range, yyyy-mm-dd (e.g. 2024-04-26). Must be on or after startDate, and at most 90 days after it. | |
| pageSize | No | Keywords per page (max 100). Defaults to 20. | |
| startDate | Yes | Start date of the range, yyyy-mm-dd (e.g. 2024-03-26). | |
| currentPage | No | Page of keywords, 1-indexed. Defaults to 1. | |
| rankRadarId | Yes | The Rank Radar UUID (from `list_rank_radars`). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint=true, but the description adds substantial behavioral context: rate limiting (~60 requests/minute), API usage cost, pagination mechanics, null handling for low-volume keywords, SQP publication delay, and the fact that paused keywords are excluded. This goes well beyond structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-organized and front-loaded with the primary use case. Each sentence carries information, though some details (e.g., metric field breakdown) could be considered dense. It remains efficient for the complexity of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must explain return values, which it does thoroughly: metric naming conventions (*TotalCount, *AsinCount, *AsinShare), rate fields, null conditions, and pagination response fields. Combined with the parameter and behavioral coverage, the description is complete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds useful performance guidance ('30 days or less keeps it fast') and pagination usage advice ('pageSize 100 for large Rank Radars', 'call again with currentPage + 1 while hasNext is true'), which enriches parameter understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (get) and resource (Search Query Performance data for a Rank Radar), and explicitly identifies the data source (Amazon Brand Analytics). It distinguishes from siblings like get_rank_radar_data and get_rank_radar_ppc_data by focusing on shopper search/click/cart/purchase metrics for keywords.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear use case ('when the user asks how shoppers search, click, add to cart and buy for the keywords of a Rank Radar') and a prerequisite ('Use after list_rank_radars'). It does not explicitly name alternative tools or state when not to use this one, but the context is strong enough to route the agent correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_seller_catalogList Catalog ASINs for a SellerARead-onlyInspect
Use this when the user wants to browse or search a seller's own Amazon catalog — the products they sell on a given marketplace. Requires a sellerId + marketplace (use list_seller_profiles to discover them). Filter by search (title/brand), brand, and status (Active by default, or all). Returns a paginated list where each item has asin, title, parentAsin, brand, status, imageUrl, and hasVariations, plus pagination metadata (currentPage, pageSize, total, lastPage, hasNext, hasPrev).
| Name | Required | Description | Default |
|---|---|---|---|
| brand | No | Case-insensitive partial match on brand name. | |
| search | No | Case-insensitive partial match on product title or brand. | |
| status | No | Listing status filter. "Active" (default) or "all". | |
| pageSize | No | Items per page (max 50). Defaults to 20. | |
| sellerId | Yes | Amazon seller account ID. Get it from `list_seller_profiles`, or find it on the Connections page at https://2.datadive.tools. | |
| currentPage | No | Page number, 1-indexed. Defaults to 1. | |
| marketplace | Yes | Amazon marketplace code, e.g. "com" for amazon.com or "co.uk" for amazon.co.uk. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already indicates a safe read operation. The description adds valuable context: it describes the return fields (asin, title, parentAsin, brand, status, imageUrl, hasVariations), pagination metadata, and default behaviors for status, pageSize, and currentPage. This goes beyond the annotation and helps set expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise yet information-dense. It front-loads the primary use case, then lists required and optional parameters in a structured way, and ends with the return format. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description compensates by listing the exact fields returned and pagination metadata. It covers prerequisites, filters, defaults, and return structure. For a read-only list tool with 7 parameters, this is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 7 parameters have schema descriptions (100% coverage), so baseline is 3. The description adds extra semantic value by clarifying defaults (status defaults to Active, pageSize defaults to 20, currentPage defaults to 1), which are not fully captured by the schema. It also reiterates the case-insensitive behavior, but that is already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to browse or search a seller's own Amazon catalog on a given marketplace. It uses specific verbs ('browse', 'search'), names the resource ('seller's own Amazon catalog'), and lists key filters, distinguishing it from related tools like get_seller_listing_changes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool ('when the user wants to browse or search a seller's own Amazon catalog') and provides prerequisites (sellerId + marketplace, discovered via list_seller_profiles). It does not explicitly state when not to use alternatives, but the context is clear enough for a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_seller_listing_changesList Listing Changes for a SellerARead-onlyInspect
Use this when the user asks what changed on their Amazon listings — price, content (title/bullets/description), or image edits — for a seller account. Requires a sellerId + marketplace (use list_seller_profiles to discover them). Filter by types, asin/parent ASIN, brand, search, and a startDate/endDate range; sort with sortBy/sortOrder. Set includeCorrelations: true to attach the ranking/conversion impact per change. Returns a paginated list where each item has asin, title, imageUrl, date, type, contentType, description, previousValue, newValue, and (optionally) correlation, plus pagination metadata (currentPage, pageSize, total, lastPage, hasNext, hasPrev).
| Name | Required | Description | Default |
|---|---|---|---|
| asin | No | Filter to an exact ASIN or parent ASIN. | |
| brand | No | Case-insensitive partial match on brand name. | |
| types | No | Filter to specific change types. Omit for all. Any of "Price", "Content", "Image". | |
| search | No | Case-insensitive partial match on product title or brand. | |
| sortBy | No | Sort field. "date" (default) or "type". | |
| endDate | No | ISO-8601 date/timestamp; return only changes detected on or before this time. | |
| pageSize | No | Items per page (max 50). Defaults to 20. | |
| sellerId | Yes | Amazon seller account ID. Get it from `list_seller_profiles`, or find it on the Connections page at https://2.datadive.tools. | |
| sortOrder | No | Sort direction. "DESC" (default) or "ASC". | |
| startDate | No | ISO-8601 date/timestamp; return only changes detected on or after this time. | |
| currentPage | No | Page number, 1-indexed. Defaults to 1. | |
| marketplace | Yes | Amazon marketplace code, e.g. "com" for amazon.com or "co.uk" for amazon.co.uk. | |
| includeCorrelations | No | When true, include the ranking/conversion `correlation` object per change (CVR and search-term movement before vs after). Defaults to false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description does not contradict this. It adds useful behavioral context beyond the annotation by explaining the paginated response shape, the per-item fields, and how includeCorrelations: true attaches ranking/conversion impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph that front-loads the use case, then systematically covers prerequisites, filtering/sorting options, the optional correlation flag, and the exact return fields. Every sentence adds operational value without restating the schema verbatim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 13 parameters, no output schema, and only a readOnlyHint annotation, this description carries the full burden of explaining invocation. It covers required args, filter/sort semantics, output fields, pagination metadata, and the conditional correlation object, making it sufficiently complete for an agent to select and call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions on every parameter, so the baseline is 3. The description adds value by grouping parameters into filters, sorting, and correlation, and by linking sellerId to the discovery tool list_seller_profiles. It also explains the output structure, which helps when selecting includeCorrelations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Use this when the user asks what changed on their Amazon listings — price, content, or image edits', which clearly identifies the action (list changes) and the resource (seller listing changes). It also distinguishes the tool from sibling tools like get_seller_catalog and list_seller_profiles by focusing on changes over time.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use the tool ('when the user asks what changed on their Amazon listings') and gives concrete prerequisites: requires sellerId + marketplace and points to list_seller_profiles for discovery. It does not explicitly mention when not to use it or name alternative tools, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_blind_spend_alertsList Blind-Spend (Wasted-Spend) AlertsARead-onlyInspect
Use this to find wasted PPC ad spend. Retrieves a paginated list of blind-spend alerts across the user's connected Amazon seller accounts — an alert flags ad spend on customer search terms that produced little or no sales. By default returns active (unresolved) alerts from the last 30 days; filter by sellerId, marketplace, status, or updatedSince (for incremental polling). Each item includes id, asin, title, imageUrl, sellerId, marketplace, lastAlertedAt, resolvedAt, wastedSpend (total ad spend across unresolved terms), totalKeywordCount, unresolvedKeywordCount, and searchTerms — the unresolved wasted-spend search terms, each with term, spend, sales, clicks, cvr (0-1), and impressions. Supports pagination metadata (currentPage, pageSize, total, lastPage, hasNext, hasPrev).
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Lifecycle filter. `active` (default) returns unresolved alerts, `resolved` returns resolved alerts, `all` returns both. Dismissed alerts are never returned. | |
| pageSize | No | Items per page (max 50). Defaults to 20. | |
| sellerId | No | Filter to a single connected Amazon seller account ID, e.g. "A1B2C3D4E5". | |
| currentPage | No | Page number, 1-indexed. Defaults to 1. | |
| marketplace | No | Filter to a single Amazon marketplace code, e.g. "com" for amazon.com or "co.uk" for amazon.co.uk. | |
| updatedSince | No | ISO-8601 timestamp; return only alerts surfaced at or after this time (filters on `lastAlertedAt`). Use it to incrementally sync since your last poll. Defaults to the last 30 days when omitted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already indicates safety. The description adds substantial behavioral detail: pagination, default filters, list of returned fields including nested searchTerms, and the fact that dismissed alerts are excluded. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense paragraph that front-loads the main purpose and then systematically covers output fields and pagination. No redundant sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (six optional filters, pagination, deeply nested item structure) and the absence of an output schema, the description provides a complete inventory of the response shape and behavior. Everything an agent needs to know is included.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover all six parameters, and the description merely restates filter names and updatedSince's purpose already in the schema. It adds marginal context beyond the schema, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a direct use case ('find wasted PPC ad spend') and clearly identifies the resource (blind-spend alerts) and scope (across connected Amazon seller accounts). It distinguishes itself from sibling tools like list_rank_radars or get_niche_* by focusing on wasted-spend alerts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States when to use ('find wasted PPC ad spend'), explains default behavior (active alerts, last 30 days), and specifically calls out updatedSince for incremental polling. It doesn't explicitly compare to alternative tools, but the use case is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_indexing_issue_alertsList Indexing-Issue AlertsARead-onlyInspect
Use this to find products that may have lost search visibility. Retrieves a paginated list of indexing-issue alerts across the user's connected Amazon seller accounts — an alert fires when one of their ASINs is no longer indexed for its tracked keywords. By default returns active (unresolved) alerts from the last 30 days; filter by sellerId, marketplace, status, or updatedSince (for incremental polling). Each item includes id, asin, title, imageUrl, isParent, sellerId, marketplace, lastAlertedAt, and resolvedAt. Supports pagination metadata (currentPage, pageSize, total, lastPage, hasNext, hasPrev).
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Lifecycle filter. `active` (default) returns unresolved alerts, `resolved` returns resolved alerts, `all` returns both. Dismissed alerts are never returned. | |
| pageSize | No | Items per page (max 50). Defaults to 20. | |
| sellerId | No | Filter to a single connected Amazon seller account ID, e.g. "A1B2C3D4E5". | |
| currentPage | No | Page number, 1-indexed. Defaults to 1. | |
| marketplace | No | Filter to a single Amazon marketplace code, e.g. "com" for amazon.com or "co.uk" for amazon.co.uk. | |
| updatedSince | No | ISO-8601 timestamp; return only alerts surfaced at or after this time (filters on `lastAlertedAt`). Use it to incrementally sync since your last poll. Defaults to the last 30 days when omitted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint: true, and the description adds meaningful behavioral context: default active status, 30-day window, filter semantics (e.g., updatedSince for incremental polling), and the fact that dismissed alerts are excluded. It doesn't cover rate limits or auth, but the read-only safety is already disclosed by annotations and the description reinforces safe usage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the primary use case and efficiently packs in scope, defaults, filters, return fields, and pagination metadata without fluff. Each sentence serves a purpose and adds concrete detail, making it well-structured for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no output schema, the description compensates by explicitly listing the fields in each response and pagination metadata. It fully covers purpose, behavior, filter options, and result structure, making it self-sufficient for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with detailed descriptions for every parameter. The description adds value by explaining defaults (active, 30 days) and the incremental polling use case for updatedSince, but the schema already carries most parameter meaning. This matches the baseline for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource ('indexing-issue alerts') and the action ('Retrieves a paginated list'), and explains what an alert represents (ASIN no longer indexed for tracked keywords). It distinguishes this tool from siblings like list_blind_spend_alerts by specifying the issue type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The opening 'Use this to find products that may have lost search visibility' gives clear when-to-use guidance. It also explains default behavior (active alerts, last 30 days) and how to filter or paginate, but does not explicitly state when not to use it or name alternative tools for other alert types.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_nichesList DataDive NichesARead-onlyInspect
Use this first when the user asks about their niches, or to find a nicheId for use with get_niche_keywords, get_niche_competitors, or get_ranking_juice. Retrieves a paginated list of Niches, newest dive first. Each Niche represents a market segment or product category being tracked. Returns nicheId, heroKeyword, nicheLabel, marketplace (com/uk/de/...), and latestResearchDate per niche, plus pagination metadata (currentPage, pageSize, total, lastPage, hasNext, hasPrev). Narrow with searchText (label/keyword) or searchAsin (a competitor ASIN) instead of scanning pages; a page holds at most 50 niches, so the full list of a large account needs several calls.
| Name | Required | Description | Default |
|---|---|---|---|
| orderBy | No | Sort field: `lastDived` (by latestResearchDate, newest first by default) or `name` (by nicheLabel, A→Z by default). Defaults to `lastDived`. | |
| pageSize | No | Items per page (max 50). Defaults to 20. | |
| sortOrder | No | Sort direction. Defaults to DESC for `lastDived` and ASC for `name`. | |
| searchAsin | No | Only niches whose competitor set contains this ASIN (10 characters, e.g. B08N5WRWNW). | |
| searchText | No | Case-insensitive partial match on the niche label or hero keyword. Prefer this over paging through everything when the user names a niche. | |
| currentPage | No | Page number, 1-indexed. Defaults to 1. Keep requesting the next page while `hasNext` is true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, which the description aligns with by describing a retrieval operation. It adds useful behavioral context: pagination metadata (currentPage, pageSize, hasNext), sort order by newest first, and the 50-item page limit, which are not in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph but logically organized: use case first, then return values, then optimization tips. Every sentence adds information, but it is slightly dense; a bulleted structure could improve skimmability without adding length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only listing tool with a rich schema and no output schema, the description covers when to use it, what it returns, how to paginate, and how to narrow results. It lacks explicit mention of default values for pageSize/orderBy, but these are fully documented in the schema, so the description is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already has 100% parameter description coverage, including defaults and examples. The description only reiterates the page size limit and search use cases without adding new meaning, so it meets the baseline but does not elevate it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs ('list', 'retrieves') with a clear resource ('Niches') and immediately states its primary use case: finding a nicheId for other tools like get_niche_keywords. It also defines what a Niche is, distinguishing this listing tool from sibling tools that operate on a specific niche.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool ('Use this first when the user asks about their niches') and gives concrete guidance on narrowing results via searchText or searchAsin instead of paging. It does not explicitly state when not to use it or name alternative tools for other scenarios, but the context is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ppc_campaignsList PPC Campaigns for a SellerARead-onlyInspect
Use this when the user asks about their Sponsored Products campaigns — which campaigns spend the most, which have a high ACOS, how placements (top of search, rest of search, product pages) perform, or which campaigns advertise a given product. Requires a sellerId + marketplace (use list_seller_profiles to discover them). Narrow to one product with asin, or to a variation family with parentAsin (not both). The reporting window defaults to the last 30 days and cannot exceed 90 days. Returns a paginated list where each campaign has campaignId, name, type, state, targetingType, bidStrategy, budget { type, amount, currencyCode }, window totals (impressions, clicks, ctr, cpc, cvr, spend, unitsSold, orders, sales, tosImpressionShare, acos, roas, tacos), asinCount and, unless includePlacements is false, placements; plus pagination metadata (currentPage, pageSize, total, lastPage, hasNext, hasPrev). To find the biggest spenders, sort with sortBy: "spend", sortOrder: "DESC" rather than paging through every campaign. Each call counts toward API usage and is rate limited (about 60 requests/minute). For per-keyword ad data of a Rank Radar, use get_rank_radar_ppc_data.
| Name | Required | Description | Default |
|---|---|---|---|
| asin | No | Only campaigns advertising this ASIN. Cannot be combined with parentAsin. | |
| state | No | Only ENABLED or only PAUSED campaigns. Omit for both. | |
| search | No | Partial match on campaign name or advertised ASIN. At least 3 characters. | |
| sortBy | No | Sort field. Defaults to "name". Any of name, state, bidStrategy, budget, impressions, clicks, ctr, cpc, spend, unitsSold, sales, acos, cvr, tosImpressionShare. The placement fields (e.g. "tosSpend", "tosAcos", "ppBidAdjustment") are only accepted when includePlacements is not false. | |
| endDate | No | End of the reporting window, ISO-8601. Defaults to now. At most 90 days after startDate. | |
| pageSize | No | Campaigns per page (max 50). Defaults to 20. | |
| sellerId | Yes | Amazon seller account ID. Get it from `list_seller_profiles`, or find it on the Connections page at https://2.datadive.tools. | |
| sortOrder | No | Sort direction. "ASC" (default) or "DESC". | |
| startDate | No | Start of the reporting window, ISO-8601. Defaults to 30 days before endDate. | |
| parentAsin | No | Only campaigns advertising any ASIN of this variation family. Cannot be combined with asin. | |
| currentPage | No | Page number, 1-indexed. Defaults to 1. | |
| marketplace | Yes | Amazon marketplace code, e.g. "com" for amazon.com or "co.uk" for amazon.co.uk. | |
| includePlacements | No | Include the per-placement breakdown (topOfSearch, restOfSearch, productPage, offAmazon, each with its bid adjustment). Defaults to true; set false for a smaller response when placements are not needed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint. The description adds the operational context that matters: ~60 requests/minute rate limit, each call counting toward API usage, a 30-day default window capped at 90 days, pagination semantics, and the includePlacements toggle affecting both response size and which sort fields are accepted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the use case before requirements and output details, and almost every sentence carries non-redundant information. It is a dense single block, though, and the long enumeration of returned metrics could be trimmed since much of it is inferable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description compensates by enumerating the returned campaign fields and pagination metadata. Together with prerequisites, window limits, rate limits, and filter exclusivity, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all 13 parameters; the baseline would be 3. The description still adds value by stating the asin/parentAsin mutual exclusion, the default reporting window, and a concrete sort recipe (sortBy: "spend", sortOrder: "DESC") that the schema alone does not suggest.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (list Sponsored Products PPC campaigns for a seller) plus the concrete questions it answers (top spenders, high ACOS, placements, campaigns advertising a product). It also distinguishes itself from the closest sibling by naming get_rank_radar_ppc_data as the per-keyword alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit about when to use it (user questions about Sponsored Products campaigns), prerequisites (sellerId + marketplace from list_seller_profiles), and where it stops (per-keyword ad data belongs to get_rank_radar_ppc_data). It also gives a routing heuristic for the common 'biggest spenders' question instead of paging everything.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_rank_radarsList Rank RadarsARead-onlyInspect
Use this to find a rankRadarId before calling get_rank_radar_data. Filter by nicheId if the user has already identified a niche. Retrieves a paginated list of Rank Radars — keyword-rank trackers monitoring organic and sponsored positions for specific ASINs over time. Each item includes id, status (ACTIVE, PAUSED or ARCHIVED), asin, marketplace, keywordCount, title, imageUrl, and summary metrics: top10KW, top10SV, top50KW, top50SV. Supports pagination metadata (currentPage, pageSize, total, lastPage, hasNext, hasPrev); a page holds at most 50 Rank Radars, so a large account needs several calls.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Which Rank Radars to return. ACTIVE (the default) are tracking; PAUSED have been stopped but keep their history and can be resumed; ARCHIVED have been deleted; ALL means active and paused together. Archived Rank Radars are returned only by an explicit ARCHIVED. | |
| nicheId | No | Filter Rank Radars by Niche identifier. Use after `list_niches`. | |
| pageSize | No | Items per page (max 50). Defaults to 20. | |
| searchText | No | Filter Rank Radars by ASIN or product title. | |
| currentPage | No | Page number, 1-indexed. Defaults to 1. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as readOnlyHint=true, and the description adds useful behavioral detail beyond that: pagination metadata, a hard cap of 50 items per page, the need for multiple calls on large accounts, and the fact that archived Rank Radars are only returned when explicitly requested. These disclosures help the agent set expectations without contradicting the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the most important use case, then explains the resource, returned fields, and pagination behavior without fluff. Every sentence earns its place, and no information is duplicated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description correctly compensates by enumerating the returned item fields and pagination metadata. It gives the agent enough detail to know what results to expect and how to page through a large account, making the tool safe to select and call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents all five parameters with full coverage, so the description does not need to repeat parameter meanings. It does add usage-oriented hints like filtering by nicheId and the 50-item page cap, but these map onto existing schema fields rather than introducing new parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it 'Retrieves a paginated list of Rank Radars' and is explicitly positioned as the way to 'find a rankRadarId before calling get_rank_radar_data'. It also enumerates the returned fields, which distinguishes it from sibling tools like create_rank_radar or pause_rank_radar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: call this before get_rank_radar_data, and filter by nicheId when the user has already identified a niche. It does not explicitly discuss when not to use it or compare it against alternatives like create/pause/delete, so it falls just short of fully explicit when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_seller_profilesList Connected Amazon Seller ProfilesARead-onlyInspect
Use this when the user asks which Amazon seller accounts are connected, or as the discovery step to find the sellerId and marketplace required by get_asin_inventory_distribution, get_seller_catalog, get_seller_listing_changes, and the alert tools. Returns a paginated list of the organization's connected seller profiles — each item has sellerId, sellerName, marketplace (e.g. "com", "co.uk"), hasAdApi (whether Advertising API credentials are connected), and createdAt — plus pagination metadata (currentPage, pageSize, total, lastPage, hasNext, hasPrev).
| Name | Required | Description | Default |
|---|---|---|---|
| pageSize | No | Items per page (max 50). Defaults to 20. | |
| currentPage | No | Page number, 1-indexed. Defaults to 1. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already indicates a safe read operation. The description adds valuable behavioral context by detailing the response structure: each profile's fields (sellerId, sellerName, marketplace, hasAdApi, createdAt) and pagination metadata (currentPage, pageSize, total, lastPage, hasNext, hasPrev). No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with usage guidance, and the second sentence enumerates the response structure without excessive detail. Every sentence earns its place, and the formatting makes it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description fully explains both the list contents and pagination metadata. It also covers the tool's purpose, usage timing, and relationship to sibling tools, making it self-sufficient for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers 100% of parameters with clear descriptions, so the baseline is 3. The description mentions pagination metadata but does not add new meaning to the parameters themselves. It reinforces that pageSize and currentPage control paging, which the schema already explains.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb ('list') and explicitly identifies the resource ('connected seller profiles') with scope ('the organization's'). It also distinguishes itself from sibling tools by positioning it as the discovery step for sellerId/marketplace needed by other tools, making its unique purpose clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description states exactly when to use it: when the user asks which Amazon seller accounts are connected, or as a discovery step. It also names specific dependent tools that require its output, giving strong contextual guidance on when this tool is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_usageList Billable Usage LogsARead-onlyInspect
Use this when the user asks who consumed tokens, how their quota was spent, or wants an audit of billable activity over a date range. Retrieves a paginated list of billable feature usage logs for the organization — each entry is a token-consumption event (a dive, rank-radar creation, AI copywriter prompt, etc.). Filter by type (billable feature), search (user name/email), and startDate/endDate. Each item includes name, email, qty (tokens consumed), type, action (specific operation), nicheId/nicheName, rankRadarId, and date, plus pagination metadata (currentPage, pageSize, total, lastPage, hasNext, hasPrev).
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter to a single billable feature type. Omit to return all types. | |
| search | No | Case-insensitive partial match on the user's name or email. | |
| endDate | No | ISO-8601 date/timestamp; return only usage logs recorded on or before this time. | |
| pageSize | No | Items per page (max 200). Defaults to 50. | |
| startDate | No | ISO-8601 date/timestamp; return only usage logs recorded on or after this time. | |
| currentPage | No | Page number, 1-indexed. Defaults to 1. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true already set, the description still adds substantial behavioral context: pagination behavior, the nature of each entry (token-consumption event), and the exact fields included. It goes beyond annotations by describing response structure and metadata, giving agents full transparency on what to expect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph but every sentence contributes value: usage triggers, what is returned, filtering options, and response fields. It is longer than minimal but appropriately so for a complex list tool; no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description fully explains what the caller will receive, including pagination metadata and per-item fields. It also clarifies that it's organization-wide, filters by type/search/date, and returns token-consumption events—complete coverage for a 6-parameter read-only list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed per-parameter descriptions. The tool description reinforces how filters map to user needs (e.g., filtering by type, search, and date range) and adds meaningful context about pagination defaults and page size caps, complementing rather than repeating the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with explicit user intents ('who consumed tokens, how their quota was spent, or wants an audit') and names the exact resource ('billable feature usage logs'). It clearly distinguishes from sibling tools like list_niches or get_quota by focusing on token-consumption events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides strong when-to-use guidance ('Use this when...') and lists supported filters. It does not explicitly mention when not to use it or name alternatives, but the context makes it clear this is for audit/quota questions, distinguishing it from read-only tools like get_quota.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pause_rank_radarPause a Rank RadarADestructiveInspect
Use this to pause tracking on a Rank Radar without losing anything — the action the DataDive API calls 'archiving', so when a user asks to archive a Rank Radar, this is the tool they mean. Tracking stops for all of its keywords and the Daily Tracked Keywords quota they held is freed for other Rank Radars, while the Rank Radar and its ranking history are kept. Fully reversible with resume_rank_radar, so it needs no confirm — prefer it over delete_rank_radar whenever the user may want the data back. Paused Rank Radars show up in list_rank_radars under status: PAUSED — not ARCHIVED, which covers Rank Radars removed with delete_rank_radar. Safe to repeat: pausing an already paused Rank Radar succeeds and changes nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| rankRadarId | Yes | The Rank Radar UUID to pause (from `list_rank_radars`). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: discloses that tracking stops for all keywords, the Daily Tracked Keywords quota is freed, data and history are retained, the operation is idempotent, and the resulting status is PAUSED not ARCHIVED. The description's 'without losing anything / fully reversible' claim clarifies rather than contradicts the conservative destructiveHint:true — the hint signals mutation, the description explains why no data is destroyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five sentences, each earning its place: terminology mapping, behavioral effects, reversibility, sibling routing, status semantics, and idempotency. Dense but logically ordered with the core purpose front-loaded in the first sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a single-parameter tool with full schema coverage: an agent knows what it does, when to pick it, what changes, what doesn't, how to reverse it, and how to verify the result via list_rank_radars. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents rankRadarId as the Rank Radar UUID from list_rank_radars, so the baseline of 3 applies. The description adds surrounding context (quota, status, reversal) but no parameter-specific semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb + resource ('pause tracking on a Rank Radar') and immediately resolves the API terminology trap: 'the action the DataDive API calls archiving'. It explicitly differentiates from sibling tools delete_rank_radar, resume_rank_radar, and implicitly from pause_rank_radar_search_terms by scoping to the whole Rank Radar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('when a user asks to archive a Rank Radar'), names the reversal alternative (resume_rank_radar), and routes around delete_rank_radar ('prefer it... whenever the user may want the data back'). Also clarifies the status semantics in list_rank_radars so an agent knows how to verify the outcome.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pause_rank_radar_search_termsPause Search Terms of a Rank RadarADestructiveInspect
Use this to stop tracking individual keywords on a Rank Radar while keeping the Rank Radar itself active — the way to trim a keyword set the user finds too broad. The DataDive API calls this 'archiving' the search terms; nothing is lost. The paused keywords keep their history and their Daily Tracked Keywords slots are freed for other keywords. Reversible with resume_rank_radar_search_terms, so it needs no confirm. Takes keyword ids, not keyword text: get them from get_rank_radar_data. Safe to repeat: already-paused terms are left unchanged.
| Name | Required | Description | Default |
|---|---|---|---|
| rankRadarId | Yes | The Rank Radar UUID the search terms belong to. | |
| rankRadarKeywordIds | Yes | The Rank Radar keyword ids to pause. These are the `id` values from `get_rank_radar_data`, or the values of `keywordToRankRadarKeywordIdMap` returned by `add_rank_radar_search_terms` — not the keyword text. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is rich in behavioral detail: it says the operation is reversible, keeps history, frees slots, requires no confirmation, and is safe to repeat. However, the annotations declare destructiveHint: true, while the description insists 'nothing is lost' and 'Reversible ... needs no confirm'. This directly contradicts the annotation, so per the rubric behavioral transparency must be scored 1.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and includes several useful operational details. It is slightly wordy in places—'archiving' plus 'history kept' plus 'nothing is lost' partially overlap—but every sentence contributes actionable guidance, so it remains effective and compact enough.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with no output schema and no nested objects, the description is complete: it covers when to use it, what effect it has, how to get inputs, reversibility, idempotency, and why confirmation can be skipped. The only serious issue is the contradiction with the destructive annotation, which is already penalized under behavioral transparency.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description adds meaningful semantics beyond the schema: it clarifies that keyword ids must not be the keyword text, and it names the exact sources of valid ids from get_rank_radar_data and add_rank_radar_search_terms. This materially improves the agent's ability to construct a correct call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('stop tracking individual keywords') and a precise resource ('on a Rank Radar while keeping the Rank Radar itself active'), which clearly distinguishes this tool from siblings like pause_rank_radar and resume_rank_radar_search_terms. It also explains the practical use case of trimming an overly broad keyword set, leaving no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use it ('the way to trim a keyword set the user finds too broad') and contrasts it with pausing the entire Rank Radar by emphasizing the radar stays active. It also points to the reverse operation and tells the agent where to get keyword ids, so the agent knows exactly how to proceed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redive_nicheRe-dive an Existing NicheADestructiveInspect
Use this to refresh an existing niche's research with current Amazon data, instead of creating a new niche with create_niche_dive. ⚠️ Spends dive tokens (one batch per ASIN dived) and cannot be undone — set confirm: true only after the user approves the cost. Not safe to retry: each call spends tokens again and starts a separate re-dive — if a call errors or times out, poll get_dive_status instead of re-calling. Two modes: same_competitors re-dives the niche's current competitor set (no other argument needed) and discover finds a fresh set, sized by numberOfCompetitors and steerable with heroAsin / lockedAsins / excludedAsins. Runs asynchronously: returns a diveId and an estimatedCompletionDate — poll get_dive_status with that diveId until it reports success. The niche keeps its nicheId, so existing rank radars and reports follow the refreshed data.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | How to pick the competitors for the refreshed dive. `same_competitors` re-runs the niche's current competitor set and takes no other argument — use it to refresh stale data. `discover` searches for a fresh competitor set, which is what you want when the niche has changed. | |
| confirm | No | Must be true to proceed — a re-dive spends dive tokens. Confirm the cost with the user first. | |
| nicheId | Yes | The niche to re-dive. Get one from `list_niches`. | |
| heroAsin | No | `discover` mode only. Seed product the competitor discovery starts from. Defaults to the niche's highest-selling competitor, preferring one the user's own connected seller account owns. | |
| lockedAsins | No | `discover` mode only. ASINs that must stay in the competitor set regardless of what discovery finds. Cannot exceed `numberOfCompetitors`, and cannot overlap `excludedAsins`. | |
| excludedAsins | No | `discover` mode only. ASINs discovery must never select. | |
| numberOfCompetitors | No | Total ASINs the refreshed dive should contain, including `lockedAsins`. Required in `discover` mode and rejected in `same_competitors` mode. Dive tokens are spent per ASIN. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare destructiveHint=true and readOnlyHint=false. The description adds substantial behavioral context: token spend per ASIN batch, irreversibility, non-idempotency (each call spends tokens and starts a separate re-dive), asynchronous execution returning `diveId` and `estimatedCompletionDate`, the expected polling flow, and that the `nicheId` persists so rank radars/reports follow refreshed data. This far exceeds the annotation baseline and contradicts nothing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-organized: purpose and sibling distinction first, then critical cost/destructive warnings, then modes, then async behavior and persistence. Every sentence earns its place. It loses a point only for being a single wall of text with many embedded qualifiers — minor segmentation would aid scanning — but it is far from bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 7 parameters, destructive side effects, two modes, mode-dependent parameters, and no output schema, the description is remarkably complete. It explains return values (`diveId`, `estimatedCompletionDate`), the full async lifecycle (poll `get_dive_status` until `success`), cost behavior, and the persistence guarantee, while correctly referencing sibling tools (`get_dive_status`, `create_niche_dive`). Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the schema already documents each parameter well. The description adds value beyond the schema by connecting parameters to modes (`same_competitors` needs no other argument; `discover` is sized by `numberOfCompetitors` and steerable by `heroAsin`/`lockedAsins`/`excludedAsins`) and by adding the user-approval requirement for `confirm`, which the schema does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('refresh'/'re-dive'), a specific resource ('an existing niche'), and immediately distinguishes itself from the sibling `create_niche_dive`. An agent can tell exactly what this tool does and how it differs from the nearest alternative without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names `create_niche_dive` as the alternative and tells the agent to use this tool instead of creating a new niche. It also gives mode-selection guidance (`same_competitors` for refreshing stale data, `discover` when the niche has changed) and retry guidance (poll `get_dive_status` on error/timeout rather than re-calling). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resume_rank_radarResume a Paused Rank RadarADestructiveInspect
Use this to restart tracking on a Rank Radar that was paused with pause_rank_radar (shown by list_rank_radars under status: PAUSED; a deleted, ARCHIVED one cannot be resumed). Keywords are resumed as far as the available Daily Tracked Keywords quota allows, most relevant first — so with a tight quota only part of the original keyword set comes back; check get_quota first if that matters. Reversible with pause_rank_radar, so it needs no confirm. Fails with a bad-request error when there is no quota left at all. Safe to repeat: resuming an already active Rank Radar changes nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| rankRadarId | Yes | The Rank Radar UUID to resume (from `list_rank_radars`). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, it candidly describes quota-dependent partial resumption, the bad-request failure mode when no quota remains, reversibility via pause_rank_radar, and idempotency on already-active radars. These are meaningful behavioral facts not captured in the schema or annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and each subsequent sentence contributes a distinct fact: state precondition, quota behavior, reversibility, failure mode, and repeatability. No filler or redundant restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter mutation with no output schema, it covers preconditions, quota handling, failure behavior, reversibility, and idempotency, and references the relevant sibling tools (list_rank_radars, get_quota, pause_rank_radar). Nothing necessary for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents rankRadarId with 100% coverage. The description adds useful meaning by constraining it to PAUSED radars, excluding ARCHIVED ones, and explaining that quota limits may cause only part of the keyword set to resume.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('restart tracking on a Rank Radar') and defines the exact object state it applies to (PAUSED via pause_rank_radar, not ARCHIVED). This makes it easy to distinguish from siblings like resume_rank_radar_search_terms and pause_rank_radar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says when the tool applies (a Rank Radar paused with pause_rank_radar), when it cannot apply (ARCHIVED), and points to get_quota as a prerequisite check when quota matters. It also states that repeating the call is safe, so there is no ambiguity about invocation conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resume_rank_radar_search_termsResume Paused Search Terms of a Rank RadarADestructiveInspect
Use this to start tracking keywords again that were paused with pause_rank_radar_search_terms. Each resumed keyword takes back one Daily Tracked Keywords slot, and the call fails if the quota is exhausted — check get_quota first. Reversible with pause_rank_radar_search_terms, so it needs no confirm. Takes keyword ids, not keyword text: get them from get_rank_radar_data. Safe to repeat: already-active terms are left unchanged.
| Name | Required | Description | Default |
|---|---|---|---|
| rankRadarId | Yes | The Rank Radar UUID the search terms belong to. | |
| rankRadarKeywordIds | Yes | The Rank Radar keyword ids to resume. These are the `id` values from `get_rank_radar_data`, or the values of `keywordToRankRadarKeywordIdMap` returned by `add_rank_radar_search_terms` — not the keyword text. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses quota consumption and failure behavior, reversibility via pause_rank_radar_search_terms, idempotence for already-active terms, and the requirement to pass ids rather than text. These are material behavioral details not available from the annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense, purposeful sentences. The purpose is front-loaded, with quota implications, reversibility, id sourcing, and idempotence each earning their place. There is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with no output schema, the description covers when to use it, prerequisites, failure conditions, reversibility, repeat-safety, and parameter sourcing. Nothing essential is missing for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are clearly documented. The description reinforces the 'not keyword text' rule and the source of ids, but does not add substantial new semantics beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: resume tracking of paused Rank Radar search terms. It clearly differentiates from the sibling pause_rank_radar_search_terms and explains the quota implication, leaving no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says when to use the tool, instructs the agent to check get_quota first, clarifies that the operation is reversible, and points to get_rank_radar_data as the source of keyword ids. This gives concrete routing and prerequisite guidance beyond simple tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v0.16.1- Added
create_niche_dive_from_competitors_list - Changed
get_dive_status1 field changed- changed
Input schema / properties / diveId / descriptionPrevious value: -"The dive identifier returned by `create_niche_dive` or `redive_niche`."New value: +"The dive identifier returned by `create_niche_dive`, `create_niche_dive_from_competitors_list` or `redive_niche`."
- Changed
get_rank_radar_data4 fields changed- added
Input schema / properties / currentPageAdded value: +{ + "description": "Page of keywords, 1-indexed. Defaults to 1.", + "minimum": 1, + "type": "integer" +} - changed
Input schema / properties / endDate / descriptionPrevious value: -"End date for the ranking data range, yyyy-mm-dd (e.g. 2024-04-26). Must be on or after startDate."New value: +"End date of the range, yyyy-mm-dd (e.g. 2024-04-26). Must be on or after startDate, and at most 90 days after it." - added
Input schema / properties / pageSizeAdded value: +{ + "description": "Keywords per page (max 100). Defaults to 20.", + "maximum": 100, + "minimum": 1, + "type": "integer" +} - changed
Input schema / properties / startDate / descriptionPrevious value: -"Start date for the ranking data range, yyyy-mm-dd (e.g. 2024-03-26)."New value: +"Start date of the range, yyyy-mm-dd (e.g. 2024-03-26)."
- Added
get_rank_radar_ppc_data - Added
get_rank_radar_sqp_data - Added
list_ppc_campaigns
1 tool update
v0.12.0- Changed
list_niches5 fields changed- changed
Input schema / properties / currentPage / descriptionPrevious value: -"Page number, 1-indexed. Defaults to 1."New value: +"Page number, 1-indexed. Defaults to 1. Keep requesting the next page while `hasNext` is true." - added
Input schema / properties / orderByAdded value: +{ + "description": "Sort field: `lastDived` (by latestResearchDate, newest first by default) or `name` (by nicheLabel, A→Z by default). Defaults to `lastDived`.", + "enum": [ + "lastDived", + "name" + ], + "type": "string" +} - added
Input schema / properties / searchAsinAdded value: +{ + "description": "Only niches whose competitor set contains this ASIN (10 characters, e.g. B08N5WRWNW).", + "pattern": "^[A-Za-z0-9]{10}$", + "type": "string" +} - added
Input schema / properties / searchTextAdded value: +{ + "description": "Case-insensitive partial match on the niche label or hero keyword. Prefer this over paging through everything when the user names a niche.", + "maxLength": 200, + "minLength": 1, + "type": "string" +} - added
Input schema / properties / sortOrderAdded value: +{ + "description": "Sort direction. Defaults to DESC for `lastDived` and ASC for `name`.", + "enum": [ + "ASC", + "DESC" + ], + "type": "string" +}
13 tool updates
v0.11.0- Added
add_rank_radar_search_terms - Added
delete_niche - Added
delete_rank_radar - Added
generate_listing_copy - Changed
get_dive_status1 field changed- changed
Input schema / properties / diveId / descriptionPrevious value: -"The dive identifier returned by `create_niche_dive`."New value: +"The dive identifier returned by `create_niche_dive` or `redive_niche`."
- Added
get_listing_copy_generation_status - Changed
list_niches2 fields changed- changed
Input schema / properties / pageSize / descriptionPrevious value: -"Items per page (max 100). Defaults to 20."New value: +"Items per page (max 50). Defaults to 20." - changed
Input schema / properties / pageSize / maximumPrevious value: -100New value: +50
- Changed
list_rank_radars4 fields changed- changed
Input schema / properties / pageSize / descriptionPrevious value: -"Items per page (max 100). Defaults to 20."New value: +"Items per page (max 50). Defaults to 20." - changed
Input schema / properties / pageSize / maximumPrevious value: -100New value: +50 - changed
Input schema / properties / status / descriptionPrevious value: -"Filter by Rank Radar status. By default, returns only ACTIVE Rank Radars. Allowed: ACTIVE, PAUSED, ARCHIVED."New value: +"Which Rank Radars to return. ACTIVE (the default) are tracking; PAUSED have been stopped but keep their history and can be resumed; ARCHIVED have been deleted; ALL means active and paused together. Archived Rank Radars are returned only by an explicit ARCHIVED." - changed
Input schema / properties / status / enumPrevious value: -[ - "ACTIVE", - "PAUSED", - "ARCHIVED" -]New value: +[ + "ACTIVE", + "PAUSED", + "ARCHIVED", + "ALL" +]
- Added
pause_rank_radar - Added
pause_rank_radar_search_terms - Added
redive_niche - Added
resume_rank_radar - Added
resume_rank_radar_search_terms
18 tool updates
v0.8.0- First observed
create_niche_dive - First observed
create_rank_radar - First observed
get_asin_inventory_distribution - First observed
get_dive_status - First observed
get_niche_competitors - First observed
get_niche_keywords - First observed
get_niche_roots - First observed
get_quota - First observed
get_rank_radar_data - First observed
get_ranking_juice - First observed
get_seller_catalog - First observed
get_seller_listing_changes - First observed
list_blind_spend_alerts - First observed
list_indexing_issue_alerts - First observed
list_niches - First observed
list_rank_radars - First observed
list_seller_profiles - First observed
list_usage
TDQS
Scored across 32 tools
Tools mostly target distinct resources and actions, but there is some potential for confusion among the three Rank Radar data tools (data, sqp, ppc) and between pause_rank_radar and pause_rank_radar_search_terms. Detailed descriptions help differentiate them, though an agent must read carefully. Overall, boundaries are clear enough for reliable selection.
All tool names follow a consistent snake_case verb_noun pattern (list_, get_, create_, pause_, resume_, delete_, add_, generate_). The verbs are predictable and the names are descriptive. No mixing of conventions or styles.
32 tools is on the heavy side, exceeding the typical 3-15 range for a well-scoped server. However, the server covers a broad domain (niches, rank radars, seller data, alerts, listing copy, quota), so many tools are justified. Still, the count may overwhelm agents and some consolidation could be possible.
The surface covers core CRUD/lifecycle for niches, rank radars, dives, seller data, and listing copy generation. Minor gaps exist: alerts can be listed but not resolved, and generated listing copy cannot be published directly. These are workable around but leave slight dead ends.
Maintenance
Related MCP Connectors
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.
MCP server for OpenAI API (chat completions, image generation, embeddings) via AceDataCloud
Hosted Amazon Seller Central and Amazon Ads MCP server for Claude, ChatGPT, Cursor, and agents.
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP Server for the Notion API, enabling Claude to interact with Notion workspaces.311,289 npm919MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that allows Claude and other AI assistants to interact with the YouTube API, providing tools to search videos/channels and retrieve detailed information about them.23 npm1MIT
- AlicenseAqualityCmaintenanceMCP server for Claude that connects to MySQL, MariaDB, and SQLite databases. Query your databases using natural language.3MIT
- FlicenseNot gradedqualityDmaintenanceAn MCP server that connects Claude Desktop to PoetryQuill's live Supabase database. Ask Claude natural language questions about your platform data.-