Skip to main content
Glama

Add competitor

add_competitor
DestructiveIdempotent

Start tracking a competitor for an extension.

Takes the store and id of a search_catalog row (as external_id), so a listing you just found can be promoted without looking anything up in between.

Promoting a listing is what earns it a store fetch: its description, install count, rating and languages start being recorded, and its position is kept even on days it falls out of the results entirely. Where it ranks has been recorded all along, from the searches this account already runs — so a competitor added today arrives with history rather than starting from zero.

The description is not available when this returns. Call list_competitors with the same extension_id until this competitor's status turns from "pending" to "scraped".

At most 5 competitors per store on the Free plan and 20 on Premium, because each costs a fetch of that store on every refresh. The two stores are counted separately.

Needs an ExtensionDash account: sign in from your app, e.g. claude mcp login extensions-dashboard or codex mcp login extensions-dashboard.

Input Schema

NameRequiredDescriptionDefault
storeYes
external_idYesChrome's 32-letter id or the AMO slug, as a search_catalog row's id gives it.
extension_idYesFrom list_extensions.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / external_id / description
      Previous value: -"Chrome's 32-letter id or the AMO slug, exactly as search_store returns it."New value: +"Chrome's 32-letter id or the AMO slug, as a search_catalog row's id gives it."
  2. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations (write, idempotent, destructive, openWorld), the description discloses the async lifecycle (no description on return; poll until status changes), the quota ceilings (5 Free / 20 Premium, counted per store), the auth requirement with concrete login commands, and exactly what data starts being recorded plus retained rank history. This adds substantial context the structured fields do not carry.

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?

Purpose and the key input relationship are front-loaded, and quota/auth facts are separated into their own paragraphs. The rank-history passage ('Where it ranks has been recorded all along... rather than starting from zero') is somewhat wordy for the value it adds, keeping it from 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 correctly explains return behavior (description not available yet, poll list_competitors), plus quota, per-store counting, and auth needs. Nothing an agent needs to invoke and then correctly wait on this tool 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 67%, and the description fills the remaining gap by tying external_id to a search_catalog row's id and noting it can be promoted without a separate lookup; store's enum and extension_id's source are already in the schema. It adds genuine meaning but doesn't document every parameter edge (e.g., AMO slug vs Chrome id formatting is only 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 opening sentence states a specific verb and resource ('Start tracking a competitor for an extension') and the surroundings make it clearly distinct from siblings like list_competitors and search_catalog, whose ids it consumes. An agent can tell what this does and how it relates to the catalog/listing tools without opening another schema.

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 gives a concrete when-to-use path: promote a listing just found in search_catalog without looking anything up in between, and it names the follow-up tool (list_competitors) with the exact condition (status 'pending' -> 'scraped'). There is no explicit when-NOT-to-use or contrast with remove_competitor, so it falls just 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.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources