Dekadans ASO

App Store keyword rankings, popularity, difficulty and keyword research across 175 storefronts.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
76%
Naming quality
98%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,912Tokens (tool definitions)
~1011 BTypical response size
Moderate attention impact (1.49% 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://dekadans.net/mcp"
    }
  }
}

Remote endpoints

https://dekadans.net/mcpstreamable-http

What it can do

Tool inventory

Tools (13)

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

Tracked apps of the user.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡add_app(appStoreId, name, platform, homeStore)

Track an app by App Store ID; its name is looked up automatically. Omit appStoreId (and pass name) for a temporary app. Free plan: 1 app.

Input Schema

{
  "type": "object",
  "properties": {
    "appStoreId": {
      "description": "Omit for a temporary (unpublished) app",
      "type": "string",
      "pattern": "^[1-9]\\d{0,19}$"
    },
    "name": {
      "description": "Defaults to the App Store name. Required for temporary apps.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "platform": {
      "default": "iphone",
      "type": "string",
      "enum": [
        "iphone",
        "ipad",
        "mac",
        "appletv",
        "realityDevice"
      ]
    },
    "homeStore": {
      "default": "us",
      "description": "Store where the app is available; used to look it up",
      "type": "string",
      "pattern": "^[a-z]{2}$"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡add_keywords(appId, store, keywords)

Track up to 100 keywords for an app in a store and measure rank, popularity and difficulty. Plan limit on total tracked keywords (free: 10); a batch over the limit is rejected entirely.

Input Schema

{
  "type": "object",
  "properties": {
    "appId": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Local app id from list_apps, not the App Store ID"
    },
    "store": {
      "type": "string",
      "pattern": "^[a-z]{2}$"
    },
    "keywords": {
      "minItems": 1,
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      }
    }
  },
  "required": [
    "appId",
    "store",
    "keywords"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢refresh_app_keywords(appId)

Measure all tracked keywords of an app now and append to history.

Input Schema

{
  "type": "object",
  "properties": {
    "appId": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Local app id from list_apps, not the App Store ID"
    }
  },
  "required": [
    "appId"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_app_keywords(appId)

Tracked keywords of an app with latest metrics.

Input Schema

{
  "type": "object",
  "properties": {
    "appId": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Local app id from list_apps, not the App Store ID"
    }
  },
  "required": [
    "appId"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_keyword_history(appId, keywordId, days)

Daily rank, popularity and difficulty history of one tracked keyword (keywordId from get_app_keywords), oldest first; days without a measurement are omitted. Free plan: last 7 days.

Input Schema

{
  "type": "object",
  "properties": {
    "appId": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Local app id from list_apps, not the App Store ID"
    },
    "keywordId": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "days": {
      "default": 30,
      "description": "Days of history to return, or \"all\". Free plan: capped at 7.",
      "anyOf": [
        {
          "type": "string",
          "const": "all"
        },
        {
          "type": "integer",
          "minimum": 1,
          "maximum": 3650
        }
      ]
    }
  },
  "required": [
    "appId",
    "keywordId"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_usage

Current plan, tracked apps, keywords and research calls in the current quota period (free: month, pro: day). A null limit means unlimited.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢search_app_store(term, store, platform, appStoreId, limit)

Live App Store search for a keyword. Returns ranked apps and difficulty; with appStoreId also that app's ranking (null = not in the returned results). Counts toward the research quota.

Input Schema

{
  "type": "object",
  "properties": {
    "term": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "store": {
      "default": "us",
      "type": "string",
      "pattern": "^[a-z]{2}$"
    },
    "platform": {
      "default": "iphone",
      "type": "string",
      "enum": [
        "iphone",
        "ipad",
        "mac",
        "appletv",
        "realityDevice"
      ]
    },
    "appStoreId": {
      "type": "string",
      "pattern": "^[1-9]\\d{0,19}$"
    },
    "limit": {
      "default": 50,
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "required": [
    "term"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_keyword_popularity(store, terms)

Popularity scores for up to 100 keywords in a store, without tracking them. Counts toward the research quota.

Input Schema

{
  "type": "object",
  "properties": {
    "store": {
      "default": "us",
      "type": "string",
      "pattern": "^[a-z]{2}$"
    },
    "terms": {
      "minItems": 1,
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      }
    }
  },
  "required": [
    "terms"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_keyword_suggestions(appStoreId, store, platform, highPopularity)

Keyword ideas for an App Store app with popularity and difficulty for the selected platform. Counts toward the research quota.

Input Schema

{
  "type": "object",
  "properties": {
    "appStoreId": {
      "type": "string",
      "pattern": "^[1-9]\\d{0,19}$"
    },
    "store": {
      "default": "us",
      "type": "string",
      "pattern": "^[a-z]{2}$"
    },
    "platform": {
      "default": "iphone",
      "type": "string",
      "enum": [
        "iphone",
        "ipad",
        "mac",
        "appletv",
        "realityDevice"
      ]
    },
    "highPopularity": {
      "default": true,
      "type": "boolean"
    }
  },
  "required": [
    "appStoreId"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_most_searched_keywords(store, category, page, limit)

One page of the most searched keywords in a store, optionally for an App Store category id (e.g. 6013). Check `month`: data can be from an earlier month. Counts toward the research quota.

Input Schema

{
  "type": "object",
  "properties": {
    "store": {
      "default": "us",
      "type": "string",
      "pattern": "^[a-z]{2}$"
    },
    "category": {
      "type": "string",
      "pattern": "^\\d{1,10}$"
    },
    "page": {
      "default": 1,
      "type": "integer",
      "minimum": 1,
      "maximum": 10000
    },
    "limit": {
      "default": 50,
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_competitor_keywords(term, store, platform, appStoreId)

Derives 1–3 word candidates from the top 10 competitors ranking for a keyword and returns those with popularity > 5, highest first. Pass your appStoreId to exclude your own app. Counts toward the research quota.

Input Schema

{
  "type": "object",
  "properties": {
    "term": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "store": {
      "default": "us",
      "type": "string",
      "pattern": "^[a-z]{2}$"
    },
    "platform": {
      "default": "iphone",
      "type": "string",
      "enum": [
        "iphone",
        "ipad",
        "mac",
        "appletv",
        "realityDevice"
      ]
    },
    "appStoreId": {
      "type": "string",
      "pattern": "^[1-9]\\d{0,19}$"
    }
  },
  "required": [
    "term"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_app_details(appStoreIds, store)

App Store details (developer, rating, price, description, screenshots) for up to 50 App Store IDs. IDs not available in the store are omitted. Counts toward the research quota.

Input Schema

{
  "type": "object",
  "properties": {
    "appStoreIds": {
      "minItems": 1,
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[1-9]\\d{0,19}$"
      }
    },
    "store": {
      "default": "us",
      "type": "string",
      "pattern": "^[a-z]{2}$"
    }
  },
  "required": [
    "appStoreIds"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded13 tools