Skip to main content
Glama
erayendes

Mogut — App Store Growth MCP

Mogut

Read-only App Store growth analysis (ASO) MCP server for the Apple ecosystem (iOS + Mac App Store).

Mogut never writes to the App Store. Write actions are handed off as ready-to-run Heimdall tool calls that the user approves.

1.0: 47 tools over 13 live data sources, ending in the report orchestrators. report_app produces the full App Report in one call; the periodic tiers (daily/weekly/monthly) report deltas from local history. See CHANGELOG.md.

Install

npm install -g mogut
mogut setup

The wizard registers Mogut with the MCP clients it finds (Claude Code & Desktop, Codex, Cursor, VS Code, Windsurf, Antigravity) — restart the client once afterwards.

The wizard stores credentials in the macOS Keychain (com.milowda.credentials) with a .env fallback. Secrets are entered in the terminal only — never in chat, never logged, never displayed. See SECURITY.md.

Related MCP server: ASO Score MCP

MCP config

{
  "mcpServers": {
    "mogut": { "command": "mogut", "args": [] }
  }
}

Nine tools are exposed by default: six mogut_* meta tools plus the three report orchestrators (report_app, report_competitor_deep, report_comparison — the fourth, report_actions, lands in v1.1). Everything else is opt-in per profile: set MOGUT_PROFILES="keyword,competitor" (or "all"). mogut_search_tools finds a tool and tells you which profile enables it. The flows are described in GUIDE.md.

What a result looks like

Every tool returns data (structuredContent) plus a writing instruction for the host model — statistics are computed in code, never delegated to the model. Every result carries source, confidence and lastCheckedAt; truncation is visible (fetched/analyzed counts); review and competitor text is marked untrusted data. A broken source becomes a visibly skipped section, never an invented number.

Tiers

Tier

Needs

Unlocks

0

nothing

all public sources — a full report is produced, marked low confidence

1

App Store Connect key

your own analytics, sales, reviews, metadata

2

+ Apple Ads OAuth

real search term reports and measured demand

3

+ a connector (RevenueCat/PostHog)

revenue-per-keyword analysis

mogut_status shows the current tier, verifies credentials live (verify: true) and counts down the 180-day Apple Ads key rotation.

Which App Store Connect role unlocks what

ASC role on the key

What works

Sales (Access to Reports) or Finance

sales reports, analytics report download, reviews, metadata import

Admin

additionally: the one-off POST /v1/analyticsReportRequests that turns the analytics feed on — Apple gates this single call behind Admin and offers no UI for it

The feed only produces data after that one POST. Mogut never sends it from the MCP surface: run npx mogut analytics enable --app <id> in the terminal (asks for the path to an Admin .p8, uses it in memory, stores nothing), or --print-only to print the request for whoever holds Admin. disable undoes it.

Advanced: Apple Ads popularity index

The official Apple Ads API has no popularity index (verified live: POST /api/v5/keywords/popularities → 404). The number the Ads UI shows comes from an undocumented endpoint that authenticates with a web session, not OAuth. Mogut can read it, but the wizard does not ask for it: it is a pasted browser cookie, it expires, and using it is a grey area against the Apple Ads terms. Without it, keyword_popularity_fetch falls back to a proxy score marked low confidence.

If you want it anyway:

  1. Log in at https://app-ads.apple.com and open any campaign screen.

  2. Open devtools → Network, filter on /cm/api, click one request.

  3. Copy that request's Cookie request header, whole.

  4. export MOGUT_APPLE_ADS_SESSION='<the cookie header>' in the environment your MCP client launches Mogut from — or store it under the apple-ads-session account of the com.milowda.credentials Keychain service.

Re-do it when the session expires. mogut_discover_sources shows the source as down once the endpoint starts refusing.

What a report looks like

report_app produces the on-demand full report; daily_digest, weekly_change_report and monthly_status_report produce the periodic tiers, reading deltas from the same local history. Anonymized golden examples of both: EXAMPLE_REPORT_FULL.md · EXAMPLE_REPORT_PERIODIC.md.

Development

npm install && npm run build && npm test

Adding a data source? Read CONTRIBUTING.md — the adapter contract and the fixture requirement are enforced by tests.

src/core/catalog.ts is generated from docs/TOOL_CATALOG.md — regenerate with node scripts/gen-catalog.mjs.

MIT.

Available Tools

9 tools
mogut_discover_profilesA

Lists every profile, whether it is loaded, and the tools it contains.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral burden. 'Lists' signals a read-only action and the sentence specifies returned content, but it does not disclose possible limitations, failure modes, how 'loaded' is represented, or whether any state changes happen. This is adequate, not rich.

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?

A single sentence with zero filler. It leads with the action and immediately describes the meaningful parts of the result. Every part of the description earns its place.

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 zero-parameter tool with no output schema, this description gives enough orientation: it says what the operation produces and at what scope. It could add detail like the exact return format, but nothing critical is missing for an agent deciding whether to invoke it.

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?

The tool has zero parameters and the input schema is empty, so there is little parameter-level semantics to add. The description appropriately focuses outward on what is returned rather than on inputs.

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?

Uses a specific verb ('Lists') and resource ('every profile'), and describes exactly what the output contains: load status and tools. This cleanly separates it from sibling tools like mogut_discover_sources and mogut_search_tools, which focus on different resources.

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?

The description implies when to use it: when the agent needs a full inventory of profiles and their loaded-state/tools. However, it never explicitly names an alternative or explains when not to use it, leaving the routing decision to inference based on sibling tool names.

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

mogut_discover_sourcesA

Lists the data sources with their tier, required credentials, health status and confidence level. With probe=true it makes one live request per source instead of reporting what past calls recorded.

ParametersJSON Schema
NameRequiredDescriptionDefault
probeNorun one live health request per configured source (slower, but current)

TDQS

A4/5.0
Behavior4/5

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

No annotations exist, so the description carries the full behavioral transparency burden, and it is largely successful: it discloses the cached/past-call default vs. the live probe mode. A minor gap is that it never explicitly states that listing sources is a non-mutating read operation or how a failed live request is reported, but the central behavioral difference is clear.

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, both essential. The first fronts the exact purpose and output fields; the second efficiently covers the parameter's behavior. Every word earns its place.

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?

For a tool with a single optional parameter and no output schema, this description is complete: it enumerates the returned fields, explains the default vs live modes, and covers the probe behavior. There is no meaningful missing context an agent would need to invoke it correctly.

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 100% with the probe parameter already documented, so the baseline is 3. The description exceeds that by contrasting probe=true with the default behavior (reporting what past calls recorded), which adds meaning beyond the schema's description of 'one live health request per configured source.'

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (lists) with a concrete resource (data sources) and the exact attributes returned: tier, required credentials, health status, and confidence level. It is distinguishable from sibling tools like mogut_discover_profiles by resource type, though it does not explicitly name any sibling.

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?

The description gives clear mode-level guidance comparing probe=true (live one-request-per-source) to the default cached behavior, which helps an agent decide on the parameter value. However, it provides no explicit guidance on when to choose this tool over siblings such as mogut_status, mogut_setup_check, or mogut_discover_profiles.

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

mogut_explain_metricA

Explains how a score is computed: formula, inputs and caveats.

ParametersJSON Schema
NameRequiredDescriptionDefault
metricYesmetric name, one of: keyword_opportunity, keyword_difficulty, brand_dominance, keyword_popularity, market_difficulty, metadata_score, ppp_price, review_health

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries most of the behavioral disclosure burden. It clearly indicates the tool produces an explanation containing formula, inputs, and caveats, and the wording implies a read-only informational operation. It does not mention output format or whether the explanation is textual, but the behavior is not misleading.

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?

One short sentence with no filler. It front-loads the action and then gives the three elements the explanation will contain. Everything in the description is relevant and none of the schema information is repeated.

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 tool with one fully documented parameter and no nested objects, the description is mostly complete: it states what the tool produces and where caveats will be addressed. The main missing pieces are example output, return format, and a more explicit statement about the expected frontier target.

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?

Schema description coverage is 100%, so the description adds minimal value here. It references 'inputs' as part of the explanation, but does not enumerate the parameter; the schema already does that with a clear list of valid metric names.

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 description opens with a specific verb ('Explains') and a concrete resource: how a score is computed. It then states the exact content covered ('formula, inputs and caveats'), which separates it from sibling report, status, and discovery tools.

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?

The use context is implied rather than explicit: an agent would call this tool when it needs to understand how a metric was calculated. The description gives no explicit when-to-use or when-not-to-use guidance, though no sibling tool appears to overlap with this explanation function.

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

mogut_search_toolsA

Searches the whole tool catalog (including tools that are not loaded or not implemented yet) by name, description or profile.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYessearch term, e.g. "keyword" or "review"

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It does reveal a non-obvious trait: the search covers tools that are not loaded or not implemented yet, which informs the agent about scope beyond the visible tool list. However, it says nothing about the return format, whether the search is case-sensitive, or any ordering or filtering behavior. Minimal behavioral context is provided, though enough to understand the main capability.

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?

One clean, front-loaded sentence that states the action, the scope, and the search criteria. Every clause adds value and there is no padding or redundancy. Efficiently sized for an API description of a straightforward search tool.

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?

The tool is simple—one query parameter, no nested objects, and no output schema. The description fully covers the tool's purpose, scope ('whole catalog'), and search dimensions, which is sufficient for an agent to decide when to call it and what to pass. The lack of an explicit statement about the returned format is a minor gap but does not block correct invocation given the tool's obvious search-and-return role.

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?

The input schema already covers 100% of parameters with a clear description for 'query' ('search term', with examples). The tool description goes beyond the schema by stating which attributes of tools are searched (name, description, profile), giving the agent a fuller understanding of what the query can match. This adds meaningful context beyond the schema's simple 'search term' label.

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?

States a specific verb ('Searches'), a clear resource ('the whole tool catalog'), and an explicit attribute ('including tools that are not loaded or not implemented yet'). It also specifies the searchable fields (name, description, profile), which distinguishes it from sibling tools that handle status, setup, discovery of profiles/sources, or metric explanation. An agent can understand the tool's function without any ambiguity.

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?

The description conveys strong context for when to use the tool: whenever an agent needs to locate a tool within the catalog, including unloaded or unimplemented ones. It doesn't explicitly name exclusions or alternatives among the sibling tools, but the contrast is implicit since siblings target specific operations rather than a catalog-wide search. This is clear enough for typical selection.

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

mogut_setup_checkA

Checks Keychain access, the SQLite database and any credentials an existing Heimdall install may already hold (never used without approval). Lists the manual setup links.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden. It explains what the tool examines, flags the approval prerequisite, and mentions its output. It does not explicitly state the tool is read-only, but 'Checks' plus the caution about approval gives the agent a clear safety picture.

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?

The description is compact, front-loaded with the main action, and every sentence adds useful information: what is checked, the approval caveat, and the listed output. There is no filler or repetition.

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 no-argument tool with no output schema, the description supplies the key context: why to call it, what it touches, the approval constraint, and what it returns. It does not include deeper troubleshooting or interaction details, but those are not essential for this tool.

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?

The input schema has zero parameters and 100% schema description coverage, so there is no hidden parameter burden for the description to explain. The 0-parameter baseline applies; no parameter guidance is missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly names the verb and resources: 'Checks Keychain access, the SQLite database and any credentials' and 'Lists the manual setup links.' It does not explicitly compare itself to sibling tools like mogut_status or mogut_discover_profiles, but its setup-diagnostic purpose is unmistakable.

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 an explicit operational condition: 'never used without approval,' which is a useful guardrail for agents. The use case is implied by the tool name and by mentioning manual setup links, though it does not explicitly name alternative tools or state when not to use it.

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

mogut_statusA

Current tier, loaded profiles, credential and optional-key state, source health, database info, and what the next tier would add. With verify=true each stored credential is tested against its live API.

ParametersJSON Schema
NameRequiredDescriptionDefault
verifyNotest every stored credential against its API (one live call per source)

TDQS

A3.7/5.0
Behavior4/5

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

Annotations are absent, so the description carries the full behavioral burden. It meaningfully discloses that verify=true triggers a live API test of each stored credential, which is the key side-effect an agent needs to anticipate. It doesn't note potential slowness or failure modes, but it is still notably transparent for a status tool.

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?

Two sentences, and both are informative. The first fronts the categories that compose the status report; the second explains the optional verify behavior. No excess text or repetition is present.

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?

With one optional boolean parameter and no output schema, the description gives enough of what it returns to call the tool correctly. It could be more explicit about how credentials are represented when verification fails or what exactly 'next tier would add' looks like, but the current text provides a suitable functional map.

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?

The schema already contains the parameter definition, including the behavior, with 100% coverage. The description largely restates this: 'each stored credential is tested against its API' mirrors the schema. It adds no additional semantic detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description enumerates specific status categories — current tier, loaded profiles, credential/optional-key state, source health, database info, and next-tier additions — so the tool's purpose is clear despite the absence of an explicit verb. It also broadly differentiates itself from sibling tools that perform setup checks or discovery, since this is the only status-oriented one that returns this exact bundled snapshot.

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?

The listed content implies this is the tool to inspect overall system state, but no explicit when-to-use guidance is given. There is no mention of when an agent should prefer mogut_setup_check or mogut_discover_profiles instead, so usage has to be inferred.

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

report_appA

The full App Report in one call: listing + metadata audit, review mining, keyword opportunity (when terms are given), market difficulty, ASC performance (from previously imported data), rank history, seasonal calendar and culture notes. Sections degrade independently — a broken source is reported as skipped, never invented.

ParametersJSON Schema
NameRequiredDescriptionDefault
appYesat least one of appId, bundleId or an apps.apple.com URL
audienceNo
keywordsNotarget terms with your 0-1 semantic fit judgement; omit to skip the ASO section
storefrontYesISO 3166-1 alpha-2 storefront code, e.g. 'US'
maxReviewPagesNo

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and does a strong job: it reveals that ASC performance depends on previously imported data, that sections fail independently, and that broken sources are reported as skipped rather than fabricated. This is valuable failure-mode context beyond what the schema could convey. It stops short of covering auth, rate limits, or output shape, but the degradation disclosure is substantive.

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?

The description is compact, uses a single evocative phrase front-loaded with the core purpose, and avoids repeating schema content. Every clause earns its place: the section list gives a complete sense of scope, and the graceful-degradation sentence provides critical behavioral context without waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with five parameters, a nested app object, one enum, and no output schema, the description does enough to convey main intent and failure behavior, but not the full picture. It omits return format details, expects the agent to guess how audience relates to 'culture notes', and does not explain maxReviewPages. The notable degradation guarantee partially compensates for missing structured metadata.

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?

Schema description coverage is 60%, with app, storefront, and keywords already explained in the schema. The description adds useful meaning for keywords by linking it to keyword opportunity and ASO section behavior. However, audience and maxReviewPages lack meaningful descriptions in both the schema and the tool description, so the overall parameter comprehension is just adequate.

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?

Description clearly identifies the tool as producing 'The full App Report in one call' for a single app, enumerating specific report sections. The scope is distinct from the sibling competitor and comparison report tools, and even within the listed sections an agent can infer the report covers. No ambiguity remains about the primary resource and action.

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?

The description implies usage: call this for a full single-app report and include keywords to activate that section. However, it never explicitly contrasts with sibling tools such as report_competitor_deep or report_comparison, nor states when to prefer them. It gives two conditions implicitly (one call, full multi-section report) but leaves alternative routing to inference.

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

report_comparisonA

Side-by-side comparison of your app against the SELECTED competitors on the shortlist, across metadata, product page, monetization and keyword ranks. The feature axis is semantic and is derived by you from the descriptions — the data carries the raw text.

ParametersJSON Schema
NameRequiredDescriptionDefault
termsNokeywords for the marketing axis; omit to skip it
ownAppIdYes
storefrontYesISO 3166-1 alpha-2 storefront code, e.g. 'US'
competitorAppIdsNoexplicit competitor set; omit to use the shortlist entries with status selected

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It conveys that the output is a side-by-side comparison and adds a somewhat cryptic note that the feature axis is 'semantic' and 'derived by you from the descriptions,' indicating the raw text is relevant. However, it leaves the mechanics of the comparison, any requirements for the shortlist, and possible limitations unexplored.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and gets the main idea across in the first sentence, but the second sentence, 'The feature axis is semantic and is derived by you from the descriptions — the data carries the raw text,' is vague and confusing. It does not clearly earn its place in the definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a report tool with no output schema and no annotations, the definition gives enough to understand that a side-by-side comparison is returned across several dimensions. It still leaves notable gaps: no concrete guidance on when to prefer this over report_app or report_competitor_deep, no explanation of what 'the feature axis is semantic' means for the agent, and no mention of output structure.

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?

Schema description coverage is 75%, and most parameter meaning is already captured: storefront, terms, and competitorAppIds each have descriptions in the schema. The tool description adds high-level comparison axes but does not meaningfully explain ownAppId or refine parameter semantics beyond the schema, so the baseline of 3 is appropriate.

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 description states a clear, specific task: a 'side-by-side comparison of your app against the SELECTED competitors on the shortlist.' The scope and covered dimensions (metadata, product page, monetization, keyword ranks) make the tool's function immediately obvious and distinguish it from sibling tools like report_app or report_competitor_deep.

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?

The description explicitly scopes the tool to the selected competitors on the shortlist, which gives an agent clear context for when this comparison tool is appropriate. It does not explicitly state when not to use it or mention sibling alternatives, but the shortlist-scoped framing is a useful selection signal.

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

report_competitor_deepA

Deep-dive on ONE competitor: public listing profile, changes observed between captures (inferred, low confidence), monetization signals (price + SensorTower estimates), keyword portfolio against your own ranks, and complaint mining with verbatim quotes. Everything is public data — what cannot be observed is skipped, not guessed.

ParametersJSON Schema
NameRequiredDescriptionDefault
termsNokeyword portfolio to check; omit to skip that section
ownAppIdNoinclude to compare ranks side by side
storefrontYesISO 3166-1 alpha-2 storefront code, e.g. 'US'
maxReviewPagesNo
competitorAppIdYes

TDQS

A4.6/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full transparency burden. It explicitly discloses that captured changes are inferred with low confidence, SensorTower data are estimates, and unobservable data is skipped rather than guessed. These are important trust hypotheses for an agent.

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?

Single dense sentence that is front-loaded with the core differentiator ('ONE competitor'), lists output section markers, and ends in a concise policy about data limitations. No filler or redundant restatement.

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?

Without an output schema or annotations, the description still names all major report sections and explains the tool's limits. It does not describe the output dossier's structure, but the provided parameter schema and section enumeration are enough for an agent to invoke the tool correctly.

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?

At 60% schema description coverage, the description adds meaningful context by linking the conceptual workflow to the parameters: competitor to competitorAppId, keyword portfolio to terms, and to ownAppId. It does not specifically explain maxReviewPages or storefront, but those are more self-explanatory and partially covered by 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?

Opens with 'Deep-dive on ONE competitor' and precisely enumerates what the tool produces: listing profile, inferred changes, monetization signals, keyword portfolio against own ranks, and complaint mining. This clearly distinguishes it from report_app and report_comparison.

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?

The 'ONE competitor' language gives clear context and the sibling-tool naming for report_comparison implies the multi-competitor alternative. The 'everything is public data' caveat and 'skipped, not guessed' note also set agent expectations. It does not explicitly name an alternative or state a hard exclusion, so it stops 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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 9 tool updatesv1.0.0
    • First observedmogut_discover_profiles
    • First observedmogut_discover_sources
    • First observedmogut_explain_metric
    • First observedmogut_search_tools
    • First observedmogut_setup_check
    • First observedmogut_status
    • First observedreport_app
    • First observedreport_comparison
    • First observedreport_competitor_deep

TDQS

A3.9/5.0
Disambiguation4/5

The tool set is largely distinct, especially the three report tools. Some overlap exists between mogut_status, mogut_setup_check, and mogut_discover_sources around credentials and source health, but their overall purpose is clear enough to avoid major misselection.

Naming Consistency3/5

The naming pattern is mixed: some tools use the consistent mogut_ prefix with verb-noun forms, but others are noun phrases such as mogut_status and mogut_setup_check, and the report_ group follows a separate convention with report_competitor_deep being especially awkward. The naming is readable but not uniform.

Tool Count5/5

Nine tools is a well-scoped size for this server. The collection covers setup, health, orientation/exploration, metric understanding, and three distinct report types without unnecessary bloat.

Completeness4/5

The server covers its apparent read-only reporting and discovery mission well, including setup checks, source health, profile/tool discovery, metric explanation, and core report outputs. Obvious gaps are not severe: importing data or managing the competitor shortlist appears to be handled outside the MCP, but it is still an implicit dependency.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Scans websites to evaluate agent-readiness and produce an ASO Score Report across 34 signals, helping improve discoverability, trust, and interoperability for AI agents.
    2
    5
    366
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server for App Store Optimization that provides keyword research, competitor analysis, review sentiment, and metadata optimization using real App Store data without requiring an API key.
    34
    4
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for mobile growth & user acquisition, connecting LLMs to a curated knowledge base of ad optimization insights and analytical skills for subscription apps.
    2
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/erayendes/app-store-growth-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server