Skip to main content
Glama

@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

  1. Sign in at https://2.datadive.tools.

  2. Go to Settings → API Key (/api-key).

  3. 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.json

  • Windows: %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/mcp

Or 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

list_niches

Paginated list of your niches. Discovery step — returns nicheIds for the niche-scoped tools below.

get_niche_keywords

Master keyword list for a niche: search volume, relevancy, competitor ASIN ranks.

get_niche_roots

Keyword lexical roots for a niche — high-impact words with frequency and broad search volume.

get_niche_competitors

Competitor ASINs, titles, BSR, category and niche statistics (sales, revenue, ratings, opportunity score).

get_ranking_juice

DataDive proprietary ranking-juice metric per competitor (current vs optimized listing).

list_rank_radars

Paginated list of rank radars. Filter by nicheId, searchText or status (ACTIVE by default, plus PAUSED, ARCHIVED, ALL).

get_rank_radar_data

Historical keyword rankings for a rank radar within a startDate/endDate range.

create_niche_dive

Spends dive tokens. Starts new niche research from a seed ASIN. Async — returns a diveId to poll with get_dive_status. Requires confirm: true.

redive_niche

Spends dive tokens. Refreshes an existing niche with current data — either the same competitors or a newly discovered set. Async — returns a diveId to poll with get_dive_status. Requires confirm: true.

get_dive_status

Poll a dive started by create_niche_dive or redive_niche: in_progress, success (carries the nicheId), or error.

create_rank_radar

Spends Search Term tokens. Starts tracking keyword rankings for an ASIN in a niche. Returns a rankRadarId. Requires confirm: true.

add_rank_radar_search_terms

Starts tracking extra keywords on an existing rank radar. Takes one Daily Tracked Keywords slot per new keyword; reversible with pause_rank_radar_search_terms.

pause_rank_radar_search_terms

Pauses individual keywords of a rank radar, keeping their history and freeing their tracking slots. Takes keyword ids from get_rank_radar_data.

resume_rank_radar_search_terms

Restarts tracking on paused keywords of a rank radar. Takes back one tracking slot each.

pause_rank_radar

Pauses a whole rank radar (what the API calls archiving — listed under status: PAUSED, not ARCHIVED). Tracking stops, the history is kept, and the tracking slots are freed. Reversible with resume_rank_radar.

resume_rank_radar

Reactivates a paused rank radar, restoring as many keywords as the remaining quota allows (most relevant first).

delete_rank_radar

Destroys ranking history. Deletes a rank radar permanently (listed under status: ARCHIVED) and frees its tracking slots. Requires confirm: true — prefer pause_rank_radar if the data may be wanted later.

delete_niche

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 confirm: true.

generate_listing_copy

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 generationId. Requires confirm: true.

get_listing_copy_generation_status

Poll a draft started by generate_listing_copy: generating, complete (carries the generated copy), or failed. Free to poll.

list_seller_profiles

Paginated list of connected Amazon seller accounts. Discovery step — returns the sellerId + marketplace the seller-scoped tools below (and the alert tools) need.

get_seller_catalog

Paginated catalog of a seller's own ASINs. Filter by search, brand, and status (Active by default).

get_seller_listing_changes

Paginated price/content/image changes on a seller's listings. Filter by types, asin, brand, search, and a date range; optionally include ranking/conversion correlation.

get_asin_inventory_distribution

Per-fulfillment-center sellable inventory for an ASIN. Requires sellerId from list_seller_profiles or your Connections page.

list_indexing_issue_alerts

Paginated list of indexing-issue alerts — ASINs no longer indexed for their tracked keywords. Filter by sellerId, marketplace, status, or updatedSince.

list_blind_spend_alerts

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.

get_quota

Current quota usage and capacity per billable feature, plus the next refresh date. No arguments.

list_usage

Paginated billable usage logs (token-consumption events). Filter by type, search (user), and startDate/endDate.

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 with numberOfCompetitors).

  • create_rank_radar — spends Search Term tokens (scales with numberOfKeywords).

  • 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.

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 of numberOfCompetitors ASINs. Steer it with heroAsin (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) and excludedAsins (never selected).

⚠️ For create_niche_dive, marketplace uses full Amazon domain suffixes (com, co.uk, com.mx, co.jp, …) — e.g. the UK marketplace is co.uk, not uk.

Configuration

Env var

Required

Default

Notes

DATADIVE_API_KEY

yes

Generate at https://2.datadive.tools/api-key

DATADIVE_API_BASE_URL

no

https://api.datadive.tools

Override for staging

DATADIVE_AUTO_CONFIRM_WRITES

no

false

Set truthy to let every confirm: true tool run without it — dives, rank radar creation, listing copy and the two deletes.

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.

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., pageSize must not exceed 50).

DataDive API error (5xx)

Transient backend issue. Try again; if it persists, contact support.

Network error reaching …

Your machine can't reach api.datadive.tools — check VPN / firewall / DNS.

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 under env (not args), 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.tools with your API key as the x-api-key header.

  • 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        # eslint

Test the binary end-to-end with the MCP Inspector:

DATADIVE_API_KEY=YOUR_API_KEY npx @modelcontextprotocol/inspector dist/index.js

Releasing

The repo uses Changesets:

npx changeset             # add a changeset describing the change (patch/minor/major)
git commit -am "fix: ..."
git push

A "Version Packages" PR opens automatically. Merging it bumps the version, updates CHANGELOG.md, and publishes to npm with provenance.

Support

License

MIT — see LICENSE.

Available Tools

28 tools
add_rank_radar_search_termsAdd Search Terms to a Rank RadarA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
rankRadarIdYesThe Rank Radar UUID to add the search terms to (from `list_rank_radars`).
searchTermsYesThe keywords to start tracking, 1–1000 per call. Must be unique. Amazon-ignored special characters (@, #, _, parentheses, …) are rejected.

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 DiveA
Destructive
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
asinYesThe seed ASIN to start the dive from (e.g. B08N5WRWNW). Competitors are built around it.
confirmNoMust be true to proceed — creating a dive spends dive tokens. Confirm the cost with the user first.
marketplaceYesAmazon 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`).
numberOfCompetitorsYesHow many competitors to analyze (minimum 2). More competitors = deeper niche but more dive tokens.

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_rank_radarCreate a Rank RadarA
Destructive
Inspect

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. Returns the new rankRadarId; read its data later with get_rank_radar_data. Requires asin, numberOfKeywords (min 1), and a nicheId from list_niches.

ParametersJSON Schema
NameRequiredDescriptionDefault
asinYesThe ASIN to track keyword rankings for.
confirmNoMust be true to proceed — creating a Rank Radar spends Search Term tokens. Confirm the cost with the user first.
nicheIdYesThe niche this Rank Radar belongs to. Get one from `list_niches`.
numberOfKeywordsYesHow many keywords to track (minimum 1). More keywords = broader tracking but more Search Term tokens.

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: states the operation cannot be undone, costs Search Term tokens scaling with numberOfKeywords, requires confirm:true after user approval, and creates a separate Rank Radar on each call. This materially changes how an agent should invoke and handle failures.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Every sentence adds necessary operational guidance for a destructive, cost-incurring action. The purpose is front-loaded, followed by the key warning, retry guidance, output info, and prerequisites. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter destructive tool with no output schema, the description covers invocation, required inputs, cost behavior, user confirmation, failure recovery, output identifier, and follow-up reading. Nothing critical is missing for correct selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although the schema already documents all parameters well, the description adds crucial behavioral semantics: cost scaling with numberOfKeywords, the confirmation requirement for confirm, and that nicheId comes from list_niches. It also notes the return value and how to read the data later.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific, actionable purpose: start tracking organic and sponsored keyword rankings for an ASIN within a niche. This clearly differentiates it from siblings like list_rank_radars, get_rank_radar_data, and create_niche_dive.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells the agent when to use the tool, warns that it spends tokens and is destructive, and instructs that on error/timeout it should check list_rank_radars rather than retry. Also notes the prerequisite of obtaining nicheId from list_niches.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_nicheDelete a NicheA
Destructive
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoMust be true to proceed — deleting a niche destroys its keywords, competitors and dive history permanently. Confirm with the user first.
nicheIdYesThe niche to delete. Get one from `list_niches`.

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 RadarA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoMust be true to proceed — deleting a Rank Radar destroys its ranking history permanently. Confirm with the user first.
rankRadarIdYesThe Rank Radar UUID to delete (from `list_rank_radars`).

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 NicheA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoMust be true to proceed — each generation spends one AI Copywriter prompt from the quota. Confirm the cost with the user first.
nicheIdYesThe niche whose keyword data the copy is written from. Get one from `list_niches`.
strategyYesWhich 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.
currentListingYesThe 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

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 ASINA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
asinYesAmazon Standard Identification Number (10 uppercase alphanumeric characters, e.g. B08XYZ1234).
sellerIdYesAmazon 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.
marketplaceYesAmazon marketplace code, e.g. "com" for amazon.com or "co.uk" for amazon.co.uk.

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 StatusA
Read-only
Inspect

Use this to poll a niche dive started with create_niche_dive 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
diveIdYesThe dive identifier returned by `create_niche_dive` or `redive_niche`.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes far beyond the `readOnlyHint` annotation by specifying the exact behavioral contract: three possible `status` shapes, their associated fields (`estimatedCompletionDate`, `nicheId`, `tokensUsed`/`tokensLeft`, `error`), and the follow-up behavior on success. It also discloses that dives can take minutes, guiding the agent on expected latency and retry semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded: first the primary purpose, then the return shapes, then the follow-up workflow, then polling guidance. Every sentence adds operational value, and the length is justified given there is no output schema to describe the response variants.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 documenting all possible response shapes and fields. It also connects the tool to sibling tools for next steps (`list_niches`, `get_niche_keywords`, `get_niche_competitors`) and gives practical polling guidance. Nothing essential for correct invocation or interpretation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the schema already describes `diveId` as the identifier returned by `create_niche_dive` or `redive_niche`. The description reinforces this relationship and adds the nuance that a re-dive returns the same niche with refreshed data, but it does not add new parameter-level details beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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: 'poll a niche dive... until it finishes.' It clearly identifies the tool as a status-polling endpoint tied to `create_niche_dive` or `redive_niche`, which distinguishes it from sibling tools that create, list, or mutate niches. The return-shape overview further removes any ambiguity about what the tool accomplishes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when to use it: after starting a dive with `create_niche_dive` or `redive_niche`, poll until it finishes. It also advises on re-polling with `estimatedCompletionDate` as a timing hint. It does not explicitly name alternative tools or provide when-not-to-use guidance, but the usage context is clear and sufficient.

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 StatusA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nicheIdYesThe niche the generation was started for.
generationIdYesThe `generationId` returned by `generate_listing_copy`.

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 StatisticsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nicheIdYesThe unique identifier of the Niche (from `list_niches`).

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 NicheA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nicheIdYesThe unique identifier of the Niche (from `list_niches`).

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 NicheA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nicheIdYesThe unique identifier of the Niche (from `list_niches`).

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 UsageA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 NicheA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nicheIdYesThe unique identifier of the Niche (from `list_niches`).

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 RadarA
Read-only
Inspect

Use this to analyze keyword ranking trends over time. Requires startDate and endDate (yyyy-mm-dd). Retrieves historical keyword ranking data for the specified Rank Radar within the date range. Returns an array of tracked keywords; each has id, keyword, searchVolume, ranks (per-day { date, organicRank, impressionRank }), and any highlight annotations. Use after list_rank_radars to discover a rankRadarId.

ParametersJSON Schema
NameRequiredDescriptionDefault
endDateYesEnd date for the ranking data range, yyyy-mm-dd (e.g. 2024-04-26). Must be on or after startDate.
startDateYesStart date for the ranking data range, yyyy-mm-dd (e.g. 2024-03-26).
rankRadarIdYesThe Rank Radar UUID (from `list_rank_radars`).

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description discloses the return format ('Returns an array of tracked keywords; each has id, keyword, searchVolume, ranks (per-day { date, organicRank, impressionRank }), and any highlight annotations') and date format requirements. This adds meaningful context about what the operation does and what the user should expect, without exceeding annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and concise. Each sentence earns its place: purpose, parameter requirements, operational behavior, return structure, and usage sequencing. There is no redundancy or fluff, making it easy for an agent to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is complete given the tool's complexity. It covers what the tool does, the required parameters and their format, the return structure, and how to obtain the necessary ID. With readOnlyHint annotation and no output schema, this description provides enough context for an agent to invoke the tool correctly without ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters thoroughly. The description adds marginal value by restating the date format and the need to obtain rankRadarId from list_rank_radars, but this information is already present in the schema. Therefore, baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Retrieves historical keyword ranking data for the specified Rank Radar within the date range.' The verb 'retrieves' is specific, and the resource ('keyword ranking data' for a Rank Radar) is well-defined. It also distinguishes from siblings like list_rank_radars and create_rank_radar by focusing on data retrieval rather than management.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context by stating 'Use after list_rank_radars to discover a rankRadarId,' which establishes a prerequisite and workflow. However, it does not explicitly mention when not to use this tool or alternative approaches, so it falls 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.

get_seller_catalogList Catalog ASINs for a SellerA
Read-only
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
brandNoCase-insensitive partial match on brand name.
searchNoCase-insensitive partial match on product title or brand.
statusNoListing status filter. "Active" (default) or "all".
pageSizeNoItems per page (max 50). Defaults to 20.
sellerIdYesAmazon seller account ID. Get it from `list_seller_profiles`, or find it on the Connections page at https://2.datadive.tools.
currentPageNoPage number, 1-indexed. Defaults to 1.
marketplaceYesAmazon marketplace code, e.g. "com" for amazon.com or "co.uk" for amazon.co.uk.

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 SellerA
Read-only
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
asinNoFilter to an exact ASIN or parent ASIN.
brandNoCase-insensitive partial match on brand name.
typesNoFilter to specific change types. Omit for all. Any of "Price", "Content", "Image".
searchNoCase-insensitive partial match on product title or brand.
sortByNoSort field. "date" (default) or "type".
endDateNoISO-8601 date/timestamp; return only changes detected on or before this time.
pageSizeNoItems per page (max 50). Defaults to 20.
sellerIdYesAmazon seller account ID. Get it from `list_seller_profiles`, or find it on the Connections page at https://2.datadive.tools.
sortOrderNoSort direction. "DESC" (default) or "ASC".
startDateNoISO-8601 date/timestamp; return only changes detected on or after this time.
currentPageNoPage number, 1-indexed. Defaults to 1.
marketplaceYesAmazon marketplace code, e.g. "com" for amazon.com or "co.uk" for amazon.co.uk.
includeCorrelationsNoWhen true, include the ranking/conversion `correlation` object per change (CVR and search-term movement before vs after). Defaults to false.

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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) AlertsA
Read-only
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoLifecycle filter. `active` (default) returns unresolved alerts, `resolved` returns resolved alerts, `all` returns both. Dismissed alerts are never returned.
pageSizeNoItems per page (max 50). Defaults to 20.
sellerIdNoFilter to a single connected Amazon seller account ID, e.g. "A1B2C3D4E5".
currentPageNoPage number, 1-indexed. Defaults to 1.
marketplaceNoFilter to a single Amazon marketplace code, e.g. "com" for amazon.com or "co.uk" for amazon.co.uk.
updatedSinceNoISO-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

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 AlertsA
Read-only
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoLifecycle filter. `active` (default) returns unresolved alerts, `resolved` returns resolved alerts, `all` returns both. Dismissed alerts are never returned.
pageSizeNoItems per page (max 50). Defaults to 20.
sellerIdNoFilter to a single connected Amazon seller account ID, e.g. "A1B2C3D4E5".
currentPageNoPage number, 1-indexed. Defaults to 1.
marketplaceNoFilter to a single Amazon marketplace code, e.g. "com" for amazon.com or "co.uk" for amazon.co.uk.
updatedSinceNoISO-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

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 NichesA
Read-only
Inspect

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 the Niches of the account. 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). TEMPORARY LIMITATION: the API does not apply paging yet, so a single call returns every niche of the account whatever currentPage and pageSize say, and the pagination metadata describes a page that was not applied. Read the whole data array and filter it yourself; do not walk currentPage while hasNext is true, because every page repeats the same rows. Accounts with many niches therefore return a large response. There is no server-side search or sorting.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageSizeNoItems per page (max 50). Defaults to 20.
currentPageNoPage number, 1-indexed. Defaults to 1.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description adds substantial behavioral context beyond that: the API does not apply paging, every page repeats the same rows, accounts with many niches return large responses, and there is no server-side search or sorting. This is exactly the kind of behavioral disclosure an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Although long, every sentence earns its place: purpose, return shape, and a critical limitation with concrete handling instructions. The TEMPORARY LIMITATION section is clearly signaled and front-loaded with actionable guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description still enumerates all returned fields and pagination metadata, defines what a Niche is, and covers the API's non-paging behavior, response size, and absence of search/sorting. An agent has everything needed to invoke the tool correctly and interpret the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes both parameters completely, so the baseline is 3. The description raises this by adding the crucial caveat that pageSize and currentPage are effectively ignored because the API returns every niche in a single call—information that is not inferable from the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific action ('Use this first when the user asks about their niches') and explicitly states it 'Retrieves the Niches of the account.' It also names the key output fields, clearly distinguishing this as the account-level niche enumeration tool from the get_niche_* siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states exactly when to use the tool ('when the user asks about their niches, or to find a nicheId') and names the downstream tools that require the ID. It also provides explicit negative guidance: do not walk currentPage while hasNext is true because paging is not applied.

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 RadarsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoWhich 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.
nicheIdNoFilter Rank Radars by Niche identifier. Use after `list_niches`.
pageSizeNoItems per page (max 50). Defaults to 20.
searchTextNoFilter Rank Radars by ASIN or product title.
currentPageNoPage number, 1-indexed. Defaults to 1.

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 ProfilesA
Read-only
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageSizeNoItems per page (max 50). Defaults to 20.
currentPageNoPage number, 1-indexed. Defaults to 1.

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 LogsA
Read-only
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter to a single billable feature type. Omit to return all types.
searchNoCase-insensitive partial match on the user's name or email.
endDateNoISO-8601 date/timestamp; return only usage logs recorded on or before this time.
pageSizeNoItems per page (max 200). Defaults to 50.
startDateNoISO-8601 date/timestamp; return only usage logs recorded on or after this time.
currentPageNoPage number, 1-indexed. Defaults to 1.

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 RadarA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
rankRadarIdYesThe Rank Radar UUID to pause (from `list_rank_radars`).

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 RadarA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
rankRadarIdYesThe Rank Radar UUID the search terms belong to.
rankRadarKeywordIdsYesThe 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

A4/5.0
Behavior1/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 NicheA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYesHow 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.
confirmNoMust be true to proceed — a re-dive spends dive tokens. Confirm the cost with the user first.
nicheIdYesThe niche to re-dive. Get one from `list_niches`.
heroAsinNo`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.
lockedAsinsNo`discover` mode only. ASINs that must stay in the competitor set regardless of what discovery finds. Cannot exceed `numberOfCompetitors`, and cannot overlap `excludedAsins`.
excludedAsinsNo`discover` mode only. ASINs discovery must never select.
numberOfCompetitorsNoTotal 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

A4.8/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 RadarA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
rankRadarIdYesThe Rank Radar UUID to resume (from `list_rank_radars`).

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 RadarA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
rankRadarIdYesThe Rank Radar UUID the search terms belong to.
rankRadarKeywordIdsYesThe 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

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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. Dates show when Glama detected each change.

  1. 13 tool updatesv0.11.0
    • Addedadd_rank_radar_search_terms
    • Addeddelete_niche
    • Addeddelete_rank_radar
    • Addedgenerate_listing_copy
    • Changedget_dive_status1 field changed
      • changedInput schema / properties / diveId / description
        Previous value: -"The dive identifier returned by `create_niche_dive`."New value: +"The dive identifier returned by `create_niche_dive` or `redive_niche`."
    • Addedget_listing_copy_generation_status
    • Changedlist_niches2 fields changed
      • changedInput schema / properties / pageSize / description
        Previous value: -"Items per page (max 100). Defaults to 20."New value: +"Items per page (max 50). Defaults to 20."
      • changedInput schema / properties / pageSize / maximum
        Previous value: -100New value: +50
    • Changedlist_rank_radars4 fields changed
      • changedInput schema / properties / pageSize / description
        Previous value: -"Items per page (max 100). Defaults to 20."New value: +"Items per page (max 50). Defaults to 20."
      • changedInput schema / properties / pageSize / maximum
        Previous value: -100New value: +50
      • changedInput schema / properties / status / description
        Previous 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."
      • changedInput schema / properties / status / enum
        Previous value: -[
        -  "ACTIVE",
        -  "PAUSED",
        -  "ARCHIVED"
        -]New value: +[
        +  "ACTIVE",
        +  "PAUSED",
        +  "ARCHIVED",
        +  "ALL"
        +]
    • Addedpause_rank_radar
    • Addedpause_rank_radar_search_terms
    • Addedredive_niche
    • Addedresume_rank_radar
    • Addedresume_rank_radar_search_terms
  2. 18 tool updatesv0.8.0
    • First observedcreate_niche_dive
    • First observedcreate_rank_radar
    • First observedget_asin_inventory_distribution
    • First observedget_dive_status
    • First observedget_niche_competitors
    • First observedget_niche_keywords
    • First observedget_niche_roots
    • First observedget_quota
    • First observedget_rank_radar_data
    • First observedget_ranking_juice
    • First observedget_seller_catalog
    • First observedget_seller_listing_changes
    • First observedlist_blind_spend_alerts
    • First observedlist_indexing_issue_alerts
    • First observedlist_niches
    • First observedlist_rank_radars
    • First observedlist_seller_profiles
    • First observedlist_usage

TDQS

A4.2/5.0
Disambiguation4/5

Each tool targets a distinct resource and action, and the descriptions are thorough enough to separate the pause/resume pairs and dive creation tools. The closest calls are pause_rank_radar vs pause_rank_radar_search_terms and create_niche_dive vs redive_niche, but their descriptions clearly distinguish scope and intent.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case, with the action first and the resource second (list_niches, create_rank_radar, pause_rank_radar_search_terms, get_seller_listing_changes). No mixed casing or inconsistent verb styles appear across the set.

Tool Count3/5

28 tools is a large surface, above the typical comfortable range, and the server spans several distinct feature areas: niche research, rank radar tracking, seller catalog data, alerts, and quota/usage monitoring. The breadth is largely justified by the domain, but the count is heavy enough that agents face a large selection space.

Completeness4/5

Core workflows are well covered: niche lifecycle, rank radar lifecycle, keyword tracking management, listing copy generation, seller catalog/inventory/listing changes, alerts, and quota/usage auditing all have supporting tools. Minor gaps exist — there is no alert resolution/update tool and no general niche update operation — but these can be worked around without blocking primary use cases.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Data-Dive-Tools/datadive-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server