ASOClimb

App Store and Google Play keyword research, rank tracking, competitors, charts and niche analysis.

使うべきか

品質と安全性

A
説明の品質
93%
スキーマの完全性
84%
命名の品質
97%
ポイズニングのリスク
100%
権限の一致
100%
プロトコルへの準拠
100%

検出事項(6)

  • LOWTool 'get_account_usage' description lacks action verbget_account_usage 内
  • LOWTool 'list_autocomplete_history' description lacks action verblist_autocomplete_history 内
  • LOWTool 'list_niche_analyses' description lacks action verblist_niche_analyses 内
  • LOWTool 'list_top_chart_categories' description lacks action verblist_top_chart_categories 内
  • LOWTool 'list_new_release_categories' description lacks action verblist_new_release_categories 内
  • LOWTool 'get_app_score_history' description lacks action verbget_app_score_history 内

ツール定義とプロトコルへの準拠に関する自動分析に基づいています。

コンテキストコスト

~5,942トークン数(ツール定義)
~839 B一般的なレスポンスサイズ
注意への影響は大きい(128k コンテキストの 4.64%)

これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。

インストール

ワンクリックインストール

これを `claude_desktop_config.json` ファイルに追加してください:

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

リモートエンドポイント

https://asoclimb.com/mcpstreamable-http

できること

ツール一覧

ツール(43)

🟢 読み取り専用🟡 書き込み🔴 削除⚪ 不明
🟢get_account_usage

Plan, limits and month-to-date usage for the workspace behind this key.

入力スキーマ

{
  "type": "object",
  "properties": {}
}
🟢get_capabilities

Which stores and data sources this deployment serves: Google Play status, chart catalogs, autocomplete sources.

入力スキーマ

{
  "type": "object",
  "properties": {}
}
🟢search_store(term, store, country, language)

Search a store for apps by name or keyword (listing metadata for up to 12 results, flagged when already tracked).

入力スキーマ

{
  "type": "object",
  "properties": {
    "term": {
      "type": "string",
      "description": "Search term."
    },
    "store": {
      "type": "string",
      "enum": [
        "apple_app_store",
        "google_play"
      ],
      "description": "Store. Google Play needs GOOGLE_PLAY_SOURCE on the deployment."
    },
    "country": {
      "type": "string",
      "description": "ISO country code, e.g. US, GB, IN."
    },
    "language": {
      "type": "string",
      "description": "Language code, e.g. en. Defaults to en."
    }
  },
  "required": [
    "term",
    "store",
    "country"
  ]
}
🟢list_applications

List the applications tracked in this workspace with their latest listing facts.

入力スキーマ

{
  "type": "object",
  "properties": {}
}
🟢get_application(application_id)

One application with its tracked keywords, competitors and listing snapshots.

入力スキーマ

{
  "type": "object",
  "properties": {
    "application_id": {
      "type": "string",
      "description": "Application id from list_applications."
    }
  },
  "required": [
    "application_id"
  ]
}
🔴add_application(bundle_id, store, country, language, platform, ...)

Track an app by bundle id (Apple) or package name (Google Play). Discovery then auto-tracks keywords and competitors when auto_track is on.

入力スキーマ

{
  "type": "object",
  "properties": {
    "bundle_id": {
      "type": "string",
      "description": "Bundle id or package name."
    },
    "store": {
      "type": "string",
      "enum": [
        "apple_app_store",
        "google_play"
      ],
      "description": "Store. Google Play needs GOOGLE_PLAY_SOURCE on the deployment."
    },
    "country": {
      "type": "string",
      "description": "ISO country code, e.g. US, GB, IN."
    },
    "language": {
      "type": "string",
      "description": "Language code, e.g. en. Defaults to en."
    },
    "platform": {
      "type": "string",
      "enum": [
        "ios",
        "macos"
      ],
      "description": "Apple platform: ios (iPhone & iPad, default) or macos (the Mac App Store). apple_app_store only."
    },
    "auto_track": {
      "type": "boolean",
      "description": "Discover and track keywords and competitors automatically (default true)."
    }
  },
  "required": [
    "bundle_id",
    "store",
    "country"
  ]
}
🔴discover_keywords(application_id, track, max_keywords)

Run keyword discovery for an application: title seeds, store suggestions and the titles of the apps that outrank it. With track true it also tracks the best candidates within the plan and up to five competitors.

入力スキーマ

{
  "type": "object",
  "properties": {
    "application_id": {
      "type": "string",
      "description": "Application id."
    },
    "track": {
      "type": "boolean",
      "description": "Track the best candidates and up to five competitors within the plan (default false: preview only)."
    },
    "max_keywords": {
      "type": "integer",
      "description": "Maximum keywords to track when track is true (default 15)."
    }
  },
  "required": [
    "application_id"
  ]
}
🟢list_keyword_opportunities(application_id)

Keyword opportunities for one application, assembled only from what this workspace already stored (tracked terms and their rank observations, saved inspections, saved store suggestions, tracked competitors and the listing itself). Reads no store, so `status` is "pending" until a discovery pass has completed for the listing.

入力スキーマ

{
  "type": "object",
  "properties": {
    "application_id": {
      "type": "string",
      "description": "Application id."
    }
  },
  "required": [
    "application_id"
  ]
}
🔴track_keyword_opportunities(application_id, terms)

Track up to 20 opportunity terms for an application. Terms the plan or the tracker rejects come back in `skipped` with a reason rather than being dropped silently.

入力スキーマ

{
  "type": "object",
  "properties": {
    "application_id": {
      "type": "string",
      "description": "Application id."
    },
    "terms": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Terms from list_keyword_opportunities."
    }
  },
  "required": [
    "application_id",
    "terms"
  ]
}
🟢list_keywords(application_id, store, country)

Tracked keywords with current rank, traffic, difficulty, KEI, favorite flag and movement. rank_change is the places gained since the previous observation day (negative = lost); it is null, not 0, when there is no earlier day or when either day did not rank (the keyword entered or left the observed depth: compare current_rank with previous_rank).

入力スキーマ

{
  "type": "object",
  "properties": {
    "application_id": {
      "type": "string",
      "description": "Filter by application id."
    },
    "store": {
      "type": "string",
      "enum": [
        "apple_app_store",
        "google_play"
      ],
      "description": "Store. Google Play needs GOOGLE_PLAY_SOURCE on the deployment."
    },
    "country": {
      "type": "string",
      "description": "ISO country code, e.g. US, GB, IN."
    }
  }
}
🔴track_keywords(application_id, keywords)

Track up to 20 keywords for an application; each gets an immediate rank observation.

入力スキーマ

{
  "type": "object",
  "properties": {
    "application_id": {
      "type": "string",
      "description": "Application id."
    },
    "keywords": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Keywords to track."
    }
  },
  "required": [
    "application_id",
    "keywords"
  ]
}
🔴untrack_keyword(keyword_id, purge)

Stop tracking a keyword. History is kept unless purge is true.

入力スキーマ

{
  "type": "object",
  "properties": {
    "keyword_id": {
      "type": "string",
      "description": "Tracking id from list_keywords."
    },
    "purge": {
      "type": "boolean",
      "description": "Delete the rank history too."
    }
  },
  "required": [
    "keyword_id"
  ]
}
🔴set_keyword_favorite(keyword_id, favorite)

Mark or unmark a tracked keyword as a favorite.

入力スキーマ

{
  "type": "object",
  "properties": {
    "keyword_id": {
      "type": "string",
      "description": "Tracking id."
    },
    "favorite": {
      "type": "boolean"
    }
  },
  "required": [
    "keyword_id",
    "favorite"
  ]
}
🟢get_keyword_rank_history(keyword_id, days)

Daily rank, traffic, difficulty and KEI observations for a tracked keyword.

入力スキーマ

{
  "type": "object",
  "properties": {
    "keyword_id": {
      "type": "string",
      "description": "Tracking id."
    },
    "days": {
      "type": "integer",
      "description": "Window in days (default 30)."
    }
  },
  "required": [
    "keyword_id"
  ]
}
🔴inspect_keyword(keyword, store, country, language, platform)

Live keyword inspection: top apps, traffic/difficulty/KEI scores with breakdown (including autocomplete demand), related keywords. Spends one keyword inspection from the monthly plan allowance and stores the result.

入力スキーマ

{
  "type": "object",
  "properties": {
    "keyword": {
      "type": "string",
      "description": "Keyword to inspect."
    },
    "store": {
      "type": "string",
      "enum": [
        "apple_app_store",
        "google_play"
      ],
      "description": "Store. Google Play needs GOOGLE_PLAY_SOURCE on the deployment."
    },
    "country": {
      "type": "string",
      "description": "ISO country code, e.g. US, GB, IN."
    },
    "language": {
      "type": "string",
      "description": "Language code, e.g. en. Defaults to en."
    },
    "platform": {
      "type": "string",
      "enum": [
        "ios",
        "macos"
      ],
      "description": "Apple platform: ios (iPhone & iPad, default) or macos (the Mac App Store). apple_app_store only."
    }
  },
  "required": [
    "keyword",
    "store",
    "country"
  ]
}
🟢list_keyword_inspections

Recent stored keyword inspections in the workspace.

入力スキーマ

{
  "type": "object",
  "properties": {}
}
🟢get_keyword_inspection(inspection_id)

One stored inspection with its full breakdown.

入力スキーマ

{
  "type": "object",
  "properties": {
    "inspection_id": {
      "type": "string",
      "description": "Inspection id."
    }
  },
  "required": [
    "inspection_id"
  ]
}
🔴run_autocomplete(prefix, store, country, language)

Live store search suggestions for a prefix, in the order the store shows them (Apple search hints / Google Play suggest). Spends one autocomplete request from the monthly plan allowance and stores the observation.

入力スキーマ

{
  "type": "object",
  "properties": {
    "prefix": {
      "type": "string",
      "description": "What the shopper has typed so far."
    },
    "store": {
      "type": "string",
      "enum": [
        "apple_app_store",
        "google_play"
      ],
      "description": "Store. Google Play needs GOOGLE_PLAY_SOURCE on the deployment."
    },
    "country": {
      "type": "string",
      "description": "ISO country code, e.g. US, GB, IN."
    },
    "language": {
      "type": "string",
      "description": "Language code, e.g. en. Defaults to en."
    }
  },
  "required": [
    "prefix",
    "store",
    "country"
  ]
}
🟢list_autocomplete_history

Stored autocomplete observations.

入力スキーマ

{
  "type": "object",
  "properties": {}
}
🔴run_niche_analysis(topic, store, country, language, platform, ...)

Analyze a niche from a seed keyword: related terms from store suggestions and title phrases, clusters, modeled market size (ranges), success rate above a threshold, newcomer success, top-3 concentration, keyword difficulty, and a 0-100 opportunity score with its range and components. Spends one niche analysis from the monthly plan allowance and stores the result.

入力スキーマ

{
  "type": "object",
  "properties": {
    "topic": {
      "type": "string",
      "description": "Topic or seed phrase."
    },
    "store": {
      "type": "string",
      "enum": [
        "apple_app_store",
        "google_play"
      ],
      "description": "Store. Google Play needs GOOGLE_PLAY_SOURCE on the deployment."
    },
    "country": {
      "type": "string",
      "description": "ISO country code, e.g. US, GB, IN."
    },
    "language": {
      "type": "string",
      "description": "Language code, e.g. en. Defaults to en."
    },
    "platform": {
      "type": "string",
      "enum": [
        "ios",
        "macos"
      ],
      "description": "Apple platform: ios (iPhone & iPad, default) or macos (the Mac App Store). apple_app_store only."
    },
    "threshold": {
      "type": "number",
      "description": "Monthly success threshold (default 10000)."
    },
    "threshold_metric": {
      "type": "string",
      "enum": [
        "revenue",
        "downloads"
      ],
      "description": "What the threshold measures (default revenue)."
    }
  },
  "required": [
    "topic",
    "store",
    "country"
  ]
}
🟢list_niche_analyses

Stored niche analyses: topic, storefront, schema version and opportunity score with its range.

入力スキーマ

{
  "type": "object",
  "properties": {}
}
🟢list_competitors(application_id)

Competitors tracked for an application (or the whole workspace).

入力スキーマ

{
  "type": "object",
  "properties": {
    "application_id": {
      "type": "string",
      "description": "Filter by application id."
    }
  }
}
🔴add_competitor(application_id, competitor_bundle_id)

Track a competitor app for one of your applications.

入力スキーマ

{
  "type": "object",
  "properties": {
    "application_id": {
      "type": "string",
      "description": "Your application id."
    },
    "competitor_bundle_id": {
      "type": "string",
      "description": "Competitor bundle id or package name."
    }
  },
  "required": [
    "application_id",
    "competitor_bundle_id"
  ]
}
🔴remove_competitor(competitor_id)

Stop tracking a competitor.

入力スキーマ

{
  "type": "object",
  "properties": {
    "competitor_id": {
      "type": "string",
      "description": "Competitor id from list_competitors."
    }
  },
  "required": [
    "competitor_id"
  ]
}
🟢get_competitor_keywords(competitor_id)

Keywords where a competitor ranks, from your tracked observations.

入力スキーマ

{
  "type": "object",
  "properties": {
    "competitor_id": {
      "type": "string",
      "description": "Competitor id."
    }
  },
  "required": [
    "competitor_id"
  ]
}
🟢list_top_chart_categories(store)

Chart collections and categories available for a store.

入力スキーマ

{
  "type": "object",
  "properties": {
    "store": {
      "type": "string",
      "enum": [
        "apple_app_store",
        "google_play"
      ],
      "description": "Store. Google Play needs GOOGLE_PLAY_SOURCE on the deployment."
    }
  },
  "required": [
    "store"
  ]
}
🟢top_charts(store, country, language, collection, category, ...)

Top free, paid or grossing chart for a store, country and category, with daily movement and new entries.

入力スキーマ

{
  "type": "object",
  "properties": {
    "store": {
      "type": "string",
      "enum": [
        "apple_app_store",
        "google_play"
      ],
      "description": "Store. Google Play needs GOOGLE_PLAY_SOURCE on the deployment."
    },
    "country": {
      "type": "string",
      "description": "ISO country code, e.g. US, GB, IN."
    },
    "language": {
      "type": "string",
      "description": "Language code, e.g. en. Defaults to en."
    },
    "collection": {
      "type": "string",
      "enum": [
        "free",
        "paid",
        "grossing"
      ]
    },
    "category": {
      "type": "string",
      "description": "Category id from list_top_chart_categories (default overall)."
    },
    "limit": {
      "type": "integer",
      "description": "Rows (default 100, max 200)."
    }
  },
  "required": [
    "store",
    "country"
  ]
}
🟢list_new_release_categories(store)

New-release collections and categories available for a store, with the coverage each store can honestly answer.

入力スキーマ

{
  "type": "object",
  "properties": {
    "store": {
      "type": "string",
      "enum": [
        "apple_app_store",
        "google_play"
      ],
      "description": "Store. Google Play needs GOOGLE_PLAY_SOURCE on the deployment."
    }
  },
  "required": [
    "store"
  ]
}
🟢new_releases(store, country, language, collection, category, ...)

Apps released to a storefront within a recent window, flagged with the chart position of the ones already ranking. Observed price, in-app purchase and audience fields only: neither store publishes per-app revenue, and none is estimated.

入力スキーマ

{
  "type": "object",
  "properties": {
    "store": {
      "type": "string",
      "enum": [
        "apple_app_store",
        "google_play"
      ],
      "description": "Store. Google Play needs GOOGLE_PLAY_SOURCE on the deployment."
    },
    "country": {
      "type": "string",
      "description": "ISO country code, e.g. US, GB, IN."
    },
    "language": {
      "type": "string",
      "description": "Language code, e.g. en. Defaults to en."
    },
    "collection": {
      "type": "string",
      "description": "Collection id from list_new_release_categories (App Store: free, paid, grossing; Google Play: new_free, new_paid)."
    },
    "category": {
      "type": "string",
      "description": "Category id from list_new_release_categories (default overall)."
    },
    "days": {
      "type": "integer",
      "description": "Release window in days (default 7, max 30)."
    }
  },
  "required": [
    "store",
    "country"
  ]
}
🔴get_category_rank(application_id, collection)

Where one of your applications sits in its own category chart today, plus the stored daily history. Records today's observation.

入力スキーマ

{
  "type": "object",
  "properties": {
    "application_id": {
      "type": "string",
      "description": "Application id."
    },
    "collection": {
      "type": "string",
      "enum": [
        "free",
        "paid",
        "grossing"
      ]
    }
  },
  "required": [
    "application_id"
  ]
}
🟢get_app_score_history(application_id, days)

Rank observations for an application across all its keywords over a window.

入力スキーマ

{
  "type": "object",
  "properties": {
    "application_id": {
      "type": "string",
      "description": "Application id."
    },
    "days": {
      "type": "integer",
      "description": "Window in days (default 7, max 90)."
    }
  },
  "required": [
    "application_id"
  ]
}
🟢get_dashboard

Workspace dashboard: totals, movers, alerts and scheduler status. A mover with change null entered the observed results (previous_rank null) or left them (current_rank null).

入力スキーマ

{
  "type": "object",
  "properties": {}
}
🟢get_scheduler_health

Whether the hourly observation job is running and how much of this workspace it has covered today: heartbeat state, tracked vs observed-today counts and the last 24 runs that included this workspace.

入力スキーマ

{
  "type": "object",
  "properties": {}
}
🟢list_alert_events

Recent rank alert events.

入力スキーマ

{
  "type": "object",
  "properties": {}
}
🟢get_metadata(application_id)

The stored live listing of a tracked application (title and description from the store; subtitle, keyword field or short description from the draft marked current), store character limits, checks on the live copy, the coverage of its tracked keywords and the saved drafts.

入力スキーマ

{
  "type": "object",
  "properties": {
    "application_id": {
      "type": "string",
      "description": "Application id."
    }
  },
  "required": [
    "application_id"
  ]
}
🔴simulate_metadata(application_id, title, subtitle, keywords, short_description, ...)

Check proposed listing copy for a tracked application and simulate it: character counters against store limits, duplicate and wasted words, keyword-field spacing, competitor brand names, Google Play description density, and which tracked or candidate keywords become covered or uncovered with a modeled coverage score (live vs draft). Coverage is a model, not a rank prediction. Stores nothing.

入力スキーマ

{
  "type": "object",
  "properties": {
    "application_id": {
      "type": "string",
      "description": "Application id."
    },
    "title": {
      "type": "string",
      "description": "Title (30 characters on both stores)."
    },
    "subtitle": {
      "type": "string",
      "description": "App Store subtitle (30). Not public: supply the live one from App Store Connect."
    },
    "keywords": {
      "type": "string",
      "description": "App Store keyword field (100, comma separated, no spaces needed). Not public: supply your own."
    },
    "short_description": {
      "type": "string",
      "description": "Google Play short description (80)."
    },
    "description": {
      "type": "string",
      "description": "Description (4000). Indexed by Google Play, not by the App Store."
    },
    "candidates": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Extra terms to simulate besides the tracked keywords (up to 50)."
    }
  },
  "required": [
    "application_id",
    "title"
  ]
}
🔴save_metadata_draft(application_id, name, is_current, title, subtitle, ...)

Save listing copy as a named draft for a tracked application, optionally marking it as the copy that is live today (fills the private fields of the live baseline). Counts against the monthly draft-save allowance.

入力スキーマ

{
  "type": "object",
  "properties": {
    "application_id": {
      "type": "string",
      "description": "Application id."
    },
    "name": {
      "type": "string",
      "description": "Draft name."
    },
    "is_current": {
      "type": "boolean",
      "description": "This is the copy live in the store today."
    },
    "title": {
      "type": "string",
      "description": "Title (30 characters on both stores)."
    },
    "subtitle": {
      "type": "string",
      "description": "App Store subtitle (30). Not public: supply the live one from App Store Connect."
    },
    "keywords": {
      "type": "string",
      "description": "App Store keyword field (100, comma separated, no spaces needed). Not public: supply your own."
    },
    "short_description": {
      "type": "string",
      "description": "Google Play short description (80)."
    },
    "description": {
      "type": "string",
      "description": "Description (4000). Indexed by Google Play, not by the App Store."
    }
  },
  "required": [
    "application_id",
    "title"
  ]
}
🟢list_metadata_drafts(application_id)

Saved metadata drafts for a tracked application, with the coverage and check counts stored when each was saved.

入力スキーマ

{
  "type": "object",
  "properties": {
    "application_id": {
      "type": "string",
      "description": "Application id."
    }
  },
  "required": [
    "application_id"
  ]
}
🟢compare_metadata_draft(draft_id)

One saved draft compared field by field with the live listing, re-simulated against the current rank observations.

入力スキーマ

{
  "type": "object",
  "properties": {
    "draft_id": {
      "type": "string",
      "description": "Draft id from list_metadata_drafts."
    }
  },
  "required": [
    "draft_id"
  ]
}
🔴check_listing_metadata(bundle_id, store, country, language, title, ...)

Check any App Store or Google Play listing, tracked or not: reads its public title and description now and runs the metadata checks on them plus any subtitle, keyword field or terms you supply. Stores nothing.

入力スキーマ

{
  "type": "object",
  "properties": {
    "bundle_id": {
      "type": "string",
      "description": "Bundle id or package name."
    },
    "store": {
      "type": "string",
      "enum": [
        "apple_app_store",
        "google_play"
      ]
    },
    "country": {
      "type": "string",
      "description": "ISO country code."
    },
    "language": {
      "type": "string",
      "description": "Language code (default en)."
    },
    "title": {
      "type": "string",
      "description": "Title (30 characters on both stores)."
    },
    "subtitle": {
      "type": "string",
      "description": "App Store subtitle (30). Not public: supply the live one from App Store Connect."
    },
    "keywords": {
      "type": "string",
      "description": "App Store keyword field (100, comma separated, no spaces needed). Not public: supply your own."
    },
    "short_description": {
      "type": "string",
      "description": "Google Play short description (80)."
    },
    "description": {
      "type": "string",
      "description": "Description (4000). Indexed by Google Play, not by the App Store."
    },
    "candidates": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Extra terms to simulate besides the tracked keywords (up to 50)."
    }
  },
  "required": [
    "bundle_id",
    "store",
    "country"
  ]
}
🟢get_keyword_gap(competitor_id)

Keyword gap against one tracked competitor: terms it ranks for in the top 30 where your app does not (with both ranks, modeled traffic, difficulty and an opportunity score), plus shared and only-you lists. Terms come only from this workspace's tracked keywords and its own keyword inspections.

入力スキーマ

{
  "type": "object",
  "properties": {
    "competitor_id": {
      "type": "string",
      "description": "Competitor id from list_competitors."
    }
  },
  "required": [
    "competitor_id"
  ]
}
🟢list_keyword_gaps(application_id)

Keyword-gap summary for every tracked competitor of an application, with each competitor's five best gap terms.

入力スキーマ

{
  "type": "object",
  "properties": {
    "application_id": {
      "type": "string",
      "description": "Application id."
    }
  },
  "required": [
    "application_id"
  ]
}
🔴expand_keyword_gap(competitor_id, prefixes, max_terms)

Widen a competitor's keyword gap: ask the store autocomplete about words from the competitor's title (or the prefixes given) and inspect new suggestions. Spends one autocomplete request per prefix and one keyword inspection per inspected term from the monthly allowances, then returns the refreshed gap.

入力スキーマ

{
  "type": "object",
  "properties": {
    "competitor_id": {
      "type": "string",
      "description": "Competitor id."
    },
    "prefixes": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Up to 3 prefixes (default: words from the competitor title)."
    },
    "max_terms": {
      "type": "integer",
      "description": "Most suggestions to inspect (default 5, max 10)."
    }
  },
  "required": [
    "competitor_id"
  ]
}

コミュニティ

このサーバーを評価する

エビデンス

最近の観測

検証済みバージョンは記録されていませんツール 43 件