rankcusp

App Store keyword ranks, the 11-30 cusp band, metadata audits and rival positions.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
90%
Naming quality
93%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,405Tokens (tool definitions)
~901 BTypical response size
Moderate attention impact (1.10% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "aso": {
      "url": "https://rankcusp.com/api/mcp"
    }
  }
}

Remote endpoints

https://rankcusp.com/api/mcpstreamable-http

What it can do

Tool inventory

Tools (9)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢list_apps

Lists the apps and rivals tracked on the account. The appId and storefront codes the other tools want come from here.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟢list_keywords(appId, country, cuspOnly, rankedOnly, limit, ...)

Lists an app's keywords in one storefront, with rank, popularity and difficulty.

Input Schema

{
  "type": "object",
  "properties": {
    "appId": {
      "type": "string",
      "description": "App Store app id"
    },
    "country": {
      "type": "string",
      "description": "Storefront code, e.g. us, tr, de"
    },
    "cuspOnly": {
      "type": "boolean",
      "description": "The 11-30 band only: the ones that reach the first page with the least effort."
    },
    "rankedOnly": {
      "type": "boolean",
      "description": "Only the ones ranking in the top 200."
    },
    "limit": {
      "type": "number",
      "description": "How many rows, at most 200."
    },
    "offset": {
      "type": "number"
    }
  },
  "required": [
    "appId",
    "country"
  ],
  "additionalProperties": false
}
🟢get_keyword(appId, country, keyword)

One keyword: its rank, its scores, its first page and the verdict - should it be targeted, and why. Every unmeasured value comes back null, never zero.

Input Schema

{
  "type": "object",
  "properties": {
    "appId": {
      "type": "string",
      "description": "App Store app id"
    },
    "country": {
      "type": "string",
      "description": "Storefront code, e.g. us, tr, de"
    },
    "keyword": {
      "type": "string",
      "description": "The phrase to look up."
    }
  },
  "required": [
    "appId",
    "country",
    "keyword"
  ],
  "additionalProperties": false
}
🟢audit_metadata(country, title, subtitle, keywordField)

Audits a draft title, subtitle and 100-character keyword field against Apple's rules and against each other. Returns what is wasted, what Apple will actually index, and the field rewritten without the waste. Nothing is submitted anywhere - this only reads the text you pass in.

Input Schema

{
  "type": "object",
  "properties": {
    "country": {
      "type": "string",
      "description": "Storefront code, e.g. us, tr, de"
    },
    "title": {
      "type": "string",
      "description": "Up to 30 characters."
    },
    "subtitle": {
      "type": "string",
      "description": "Up to 30 characters."
    },
    "keywordField": {
      "type": "string",
      "description": "The 100-character field, comma-separated, as App Store Connect wants it."
    }
  },
  "required": [
    "country"
  ],
  "additionalProperties": false
}
🟢country_priorities(appId)

Ranks the storefronts an app is tracked in by how much is winnable there: how many keywords sit in the cusp band, how many already reach the top ten, and whether the rivals' ratings leave an opening. Answers which market to work on first.

Input Schema

{
  "type": "object",
  "properties": {
    "appId": {
      "type": "string",
      "description": "App Store app id"
    }
  },
  "required": [
    "appId"
  ],
  "additionalProperties": false
}
🟢ranking_keywords(appId, country, maxRank, limit)

Which keywords an app is already ranking for, from the pooled record of every search this product has run. Works on any App Store id, not only the ones on this account - point it at a rival to read theirs. Apple publishes no endpoint for this; the answer is only as wide as what has been observed, so an app nobody has swept near returns little.

Input Schema

{
  "type": "object",
  "properties": {
    "appId": {
      "type": "string",
      "description": "App Store app id"
    },
    "country": {
      "type": "string",
      "description": "Storefront code, e.g. us, tr, de"
    },
    "maxRank": {
      "type": "number",
      "description": "Only positions at or above this, e.g. 30 for the reachable band."
    },
    "limit": {
      "type": "number",
      "description": "How many rows, at most 200."
    }
  },
  "required": [
    "appId"
  ],
  "additionalProperties": false
}
🟢keyword_competitors(keyword, country, limit)

Who ranks for a phrase, deeper than the ten the first page carries. Use it to find the rivals a first-page reading misses - an app at 40 for a phrase you sit at 60 for is the one to study.

Input Schema

{
  "type": "object",
  "properties": {
    "keyword": {
      "type": "string",
      "description": "The phrase to look up."
    },
    "country": {
      "type": "string",
      "description": "Storefront code, e.g. us, tr, de"
    },
    "limit": {
      "type": "number"
    }
  },
  "required": [
    "keyword",
    "country"
  ],
  "additionalProperties": false
}
🟡add_keywords(appId, country, keywords)

Adds keywords to an app's tracked set in one storefront. Takes a list or a comma-separated paste. They arrive unscored - scoring costs requests to Apple and happens on the collector's schedule - so do not read a null popularity here as a zero.

Input Schema

{
  "type": "object",
  "properties": {
    "appId": {
      "type": "string",
      "description": "App Store app id"
    },
    "country": {
      "type": "string",
      "description": "Storefront code, e.g. us, tr, de"
    },
    "keywords": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The phrases to track."
    }
  },
  "required": [
    "appId",
    "country",
    "keywords"
  ],
  "additionalProperties": false
}
🟢cusp_actions(appId, country, limit)

The keywords in the 11-30 band, ordered by popularity. The work list a metadata edit pays off on most.

Input Schema

{
  "type": "object",
  "properties": {
    "appId": {
      "type": "string",
      "description": "App Store app id"
    },
    "country": {
      "type": "string",
      "description": "Storefront code, e.g. us, tr, de"
    },
    "limit": {
      "type": "number"
    }
  },
  "required": [
    "appId",
    "country"
  ],
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded9 tools
verifiedversion not recorded9 tools