Skip to main content
Glama

Add a competitor

add_competitor

Add a competitor app by store bundle ID to track its rankings against your app. Fetches store metadata and backfills ranking entries for every keyword you track.

Instructions

Add a competitor app to one of your applications, identified by the competitor's store bundle ID. The competitor metadata is fetched from the store and ranking entries are backfilled for every keyword tracked on the main app.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
langYesBCP-47 language-region code (e.g., en-US, fr-FR, de-DE)
storeYesApp store: GPLAY (Google Play) or ITUNES (App Store)
app_idYesThe main application internal ID (from list_applications results)
countryYesISO country code (e.g., US, FR, DE)
competitor_app_idYesStore bundle ID of the competitor (e.g. "com.spotify.music" for GPLAY, "284882215" or a bundle ID for ITUNES)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv1.6.1
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedInput schema / properties / app_id / maximum
      Added value: +9007199254740991
  2. First observedv1.4.0

TDQS

A4/5.0
Behavior4/5

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

Annotations declare non-read-only, non-idempotent, open-world and non-destructive, and the description adds real value beyond them: metadata is fetched remotely ('from the store', reinforcing the open-world hint) and ranking entries are backfilled for every tracked keyword — a non-obvious side effect that the annotations alone do not convey.

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?

Two sentences with zero filler. The core action and identifier come first, and the side-effect context follows, making it well front-loaded.

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?

For a 5-required-param mutation with no output schema, it covers the action, the identifying key, the external fetch, and the keyword backfill side effect. It stops short of stating whether the backfill is immediate or asynchronous and gives no hint of a return value, which leaves 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?

With 100% schema description coverage across all five parameters, the schema already documents app_id, store, country, lang and competitor_app_id. The description only restates that the competitor is identified by store bundle ID, adding no new syntax or format detail, so 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?

Specific verb ('Add') plus resource ('a competitor app to one of your applications') with the identification key (store bundle ID) named up front. It is clearly distinct from the sibling add_application and remove_competitor, so an agent can select it 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 Guidelines3/5

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

It implies usage context by describing the backfill over 'every keyword tracked on the main app', which tells the agent this is tied to an existing tracked app. However, it never says when to prefer this over list_competitors/remove_competitor or what prerequisites (e.g., the app must already exist) apply.

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