{"_id":"@algosoftltd/aso-mcp","_rev":"5-379d70e23eb6a88732281be4f16f6bee","name":"@algosoftltd/aso-mcp","dist-tags":{"latest":"0.6.0"},"versions":{"0.2.0":{"name":"@algosoftltd/aso-mcp","version":"0.2.0","keywords":["mcp","model-context-protocol","aso","app-store-optimization","keyword-research","app-store","algosoft"],"author":{"name":"AlgoSoft Technologies Limited"},"license":"MIT","_id":"@algosoftltd/aso-mcp@0.2.0","maintainers":[{"name":"mubin986","email":"mubin986@gmail.com"}],"homepage":"https://github.com/algosoftbd/algosoft-os#readme","bugs":{"url":"https://github.com/algosoftbd/algosoft-os/issues"},"bin":{"algosoft-aso-mcp":"dist/index.js"},"dist":{"shasum":"48ca0a2664f40e44ad550eba56cc654219157777","tarball":"https://registry.npmjs.org/@algosoftltd/aso-mcp/-/aso-mcp-0.2.0.tgz","fileCount":5,"integrity":"sha512-N7Ca07XghovmgCiqBwWyfRnFZhr7KycKb/6K7RH3D4yps2HlVEHJtKtuvmQ2RMg9ORBamWG+vNNCy9za3yNkrA==","signatures":[{"sig":"MEYCIQCEdo2frKXwJ7hUFvLKs+FQVpYt4bsLlwzDIIjyxSNmOwIhANSEWyKKYw2x/xaRNokmrJqziAwLKG1vxwfBffhvCu7Q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1595723},"type":"module","engines":{"node":">=20"},"gitHead":"239f2e6a7a274224b8c24e78db63210cad4b5e43","scripts":{"build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"mubin986","email":"mubin986@gmail.com"},"repository":{"url":"git+https://github.com/algosoftbd/algosoft-os.git","type":"git","directory":"apps/aso-mcp"},"_npmVersion":"10.8.2","description":"App Store Optimization MCP server — keyword traffic and difficulty, rankings, and per-country competitor discovery from Apple's public App Store data. No account, no API key.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.9.0","@modelcontextprotocol/sdk":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/aso-mcp_0.2.0_1786721852119_0.9866083875446268","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@algosoftltd/aso-mcp","version":"0.3.0","keywords":["mcp","model-context-protocol","aso","app-store-optimization","keyword-research","app-store","algosoft"],"author":{"name":"AlgoSoft Technologies Limited"},"license":"MIT","_id":"@algosoftltd/aso-mcp@0.3.0","maintainers":[{"name":"mubin986","email":"mubin986@gmail.com"}],"homepage":"https://github.com/algosoftbd/algosoft-os#readme","bugs":{"url":"https://github.com/algosoftbd/algosoft-os/issues"},"bin":{"algosoft-aso-mcp":"dist/index.js"},"dist":{"shasum":"50a4b694f71ed2b7bec5cf809477f7c5217f0b90","tarball":"https://registry.npmjs.org/@algosoftltd/aso-mcp/-/aso-mcp-0.3.0.tgz","fileCount":5,"integrity":"sha512-P82f4Ct0qbfQ5c8F3+LW4v0sO0aUH3b96dfl9WfyvXCIBpeC4a3DiRz57ex4Cd0vbc62ox6KaFMvHhKKWkm9fA==","signatures":[{"sig":"MEUCIQDSxqPCZAgKWRBtdxxqL63UICQshR79oXUNx5YThn+2zAIgZaGeVNNKA6VzoOWeO1CvnXsKVwTjMY7zvCZ1Hf4I0f4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1634735},"type":"module","engines":{"node":">=20"},"gitHead":"4ed53d6566a89da0372715f737c49f3b1f943adc","scripts":{"build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"mubin986","email":"mubin986@gmail.com"},"repository":{"url":"git+https://github.com/algosoftbd/algosoft-os.git","type":"git","directory":"apps/aso-mcp"},"_npmVersion":"10.8.2","description":"App Store Optimization MCP server — keyword traffic and difficulty, rankings, and per-country competitor discovery from Apple's public App Store data. No account, no API key.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.9.0","@modelcontextprotocol/sdk":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/aso-mcp_0.3.0_1786733154204_0.9325350183394492","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@algosoftltd/aso-mcp","version":"0.4.0","keywords":["mcp","model-context-protocol","aso","app-store-optimization","keyword-research","app-store","algosoft"],"author":{"name":"AlgoSoft Technologies Limited"},"license":"MIT","_id":"@algosoftltd/aso-mcp@0.4.0","maintainers":[{"name":"mubin986","email":"mubin986@gmail.com"}],"homepage":"https://github.com/algosoftbd/algosoft-os#readme","bugs":{"url":"https://github.com/algosoftbd/algosoft-os/issues"},"bin":{"algosoft-aso-mcp":"dist/index.js"},"dist":{"shasum":"fae1223b4b82aea70f907a998b6458fce132514b","tarball":"https://registry.npmjs.org/@algosoftltd/aso-mcp/-/aso-mcp-0.4.0.tgz","fileCount":5,"integrity":"sha512-Yg7HZ3UzHvp1LfESuD4iOm47lHq84RlAMh4bbLF0kVMx0hLZfpWfJ3Zk/GvKR1fB0W3N/dCuxfjHy82j9ihokQ==","signatures":[{"sig":"MEUCID5T/rLXUjd+Igaaerrl2aoYwFPZ7zlBo3mpg4bz5fcLAiEAtx/nHHdcI0rved2dn0ece+8ci7JzW9o+CwpXeFCg7Ms=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1637238},"type":"module","engines":{"node":">=20"},"gitHead":"f55328b72ad3c443008ebc42cf6ff10af90a4b4e","scripts":{"build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"mubin986","email":"mubin986@gmail.com"},"repository":{"url":"git+https://github.com/algosoftbd/algosoft-os.git","type":"git","directory":"apps/aso-mcp"},"_npmVersion":"10.8.2","description":"App Store Optimization MCP server — keyword traffic and difficulty, rankings, and per-country competitor discovery from Apple's public App Store data. No account, no API key.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.9.0","@modelcontextprotocol/sdk":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/aso-mcp_0.4.0_1786781140682_0.09668745967741055","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@algosoftltd/aso-mcp","version":"0.5.0","keywords":["mcp","model-context-protocol","aso","app-store-optimization","keyword-research","app-store","algosoft"],"author":{"name":"AlgoSoft Technologies Limited"},"license":"MIT","_id":"@algosoftltd/aso-mcp@0.5.0","maintainers":[{"name":"mubin986","email":"mubin986@gmail.com"}],"homepage":"https://github.com/algosoftbd/algosoft-os#readme","bugs":{"url":"https://github.com/algosoftbd/algosoft-os/issues"},"bin":{"algosoft-aso-mcp":"dist/index.js"},"dist":{"shasum":"12e4d150b9cc8a631e2c2f4f4d0eb063d89d24e8","tarball":"https://registry.npmjs.org/@algosoftltd/aso-mcp/-/aso-mcp-0.5.0.tgz","fileCount":5,"integrity":"sha512-REhZtD/cIEsmwkQButdzdIRH7zv/1rPmJzLLGZXOAJi16DHfXtci411o67R2MX4Y+/OcSbRVSQdgVjCIQL5Riw==","signatures":[{"sig":"MEYCIQDvlVEVFJFjNCxbX2Nw4wS35AvHfRJ+eYa5kjNTORoqhgIhANq1XWm9Y9Q9gi2N6wvzYKb12uaNRf2cKViiEVCQYeGo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1638342},"type":"module","engines":{"node":">=20"},"gitHead":"f446c135d0ffe7a747a4426fcc53ab35d7d8e3c9","scripts":{"build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"mubin986","email":"mubin986@gmail.com"},"repository":{"url":"git+https://github.com/algosoftbd/algosoft-os.git","type":"git","directory":"apps/aso-mcp"},"_npmVersion":"10.8.2","description":"App Store Optimization MCP server — keyword traffic and difficulty, rankings, and per-country competitor discovery from Apple's public App Store data. No account, no API key.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.9.0","@modelcontextprotocol/sdk":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/aso-mcp_0.5.0_1786781938032_0.4654048157483157","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@algosoftltd/aso-mcp","version":"0.6.0","description":"App Store Optimization MCP server — keyword traffic and difficulty, rankings, and per-country competitor discovery from Apple's public App Store data. No account, no API key.","license":"MIT","author":{"name":"AlgoSoft Technologies Limited"},"type":"module","bin":{"algosoft-aso-mcp":"dist/index.js"},"engines":{"node":">=20"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/algosoftbd/algosoft-os.git","directory":"apps/aso-mcp"},"keywords":["mcp","model-context-protocol","aso","app-store-optimization","keyword-research","app-store","algosoft"],"scripts":{"build":"tsup","prepublishOnly":"npm run build","typecheck":"tsc --noEmit"},"devDependencies":{"@modelcontextprotocol/sdk":"^1.0.0","tsup":"^8.0.0","typescript":"^5.9.0"},"_id":"@algosoftltd/aso-mcp@0.6.0","gitHead":"47b54c1a6fabe0ebbd3d11edbac6624118bddd80","bugs":{"url":"https://github.com/algosoftbd/algosoft-os/issues"},"homepage":"https://github.com/algosoftbd/algosoft-os#readme","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-iQrEO0m43ruPhmVfKNhhH4V5wGij7Ny3FirF4oL7viSUMrVZEEec5QCze4SEn4TfDPDm5+zFIKHJKGdtKwJXFg==","shasum":"eac1b45b2b7bcaa7a2154061991affe52db4926b","tarball":"https://registry.npmjs.org/@algosoftltd/aso-mcp/-/aso-mcp-0.6.0.tgz","fileCount":5,"unpackedSize":1639813,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDl1UVwiXosoqCkJZGhkDQo9UNU8bB+m1i34y86B3riXgIgFVE+9kWpC601ysElsaPfhzhDhJbRfvTKJHtywIr0W3I="}]},"_npmUser":{"name":"mubin986","email":"mubin986@gmail.com"},"directories":{},"maintainers":[{"name":"mubin986","email":"mubin986@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/aso-mcp_0.6.0_1787767455229_0.8135420010734324"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-14T15:37:31.909Z","modified":"2026-08-26T18:04:15.663Z","0.2.0":"2026-08-14T15:37:32.326Z","0.3.0":"2026-08-14T18:45:54.377Z","0.4.0":"2026-08-15T08:05:40.838Z","0.5.0":"2026-08-15T08:18:58.183Z","0.6.0":"2026-08-26T18:04:15.408Z"},"bugs":{"url":"https://github.com/algosoftbd/algosoft-os/issues"},"author":{"name":"AlgoSoft Technologies Limited"},"license":"MIT","homepage":"https://github.com/algosoftbd/algosoft-os#readme","keywords":["mcp","model-context-protocol","aso","app-store-optimization","keyword-research","app-store","algosoft"],"repository":{"type":"git","url":"git+https://github.com/algosoftbd/algosoft-os.git","directory":"apps/aso-mcp"},"description":"App Store Optimization MCP server — keyword traffic and difficulty, rankings, and per-country competitor discovery from Apple's public App Store data. No account, no API key.","maintainers":[{"name":"mubin986","email":"mubin986@gmail.com"}],"readme":"# @algosoftltd/aso-mcp\n\nAn [MCP](https://modelcontextprotocol.io) server for **App Store Optimization**: keyword traffic and\ndifficulty, search rankings, and per-country competitor discovery — built entirely on Apple's public\nApp Store data.\n\n**No account. No API key. Nothing to configure.**\n\n```bash\nnpx @algosoftltd/aso-mcp\n```\n\n## What it answers\n\n```\n\"lecture note taker\"   traffic 73/100   difficulty 69/100   your rank #35\n   suggested from \"lectu\" at #5 of 10 · median 16,263 ratings in the top 10\n\n\"ai note taker\"        traffic 95/100   difficulty 82/100   not in top 100\n   suggested from \"ai n\" at #1 of 10 · median 21,390 ratings in the top 10\n```\n\n## Setup\n\nNone. Add it to any MCP client:\n\n```json\n{\n  \"mcpServers\": {\n    \"aso\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@algosoftltd/aso-mcp\"]\n    }\n  }\n}\n```\n\n## Tools\n\n| Tool | Answers |\n| --- | --- |\n| `keyword_scores` | How much traffic a keyword carries, how hard it is, and where your app ranks |\n| `suggest_keywords` | Apple's own autocomplete for a prefix — what people actually type |\n| `search_rankings` | Which apps rank for a term, in order |\n| `app_rank` | Where one app sits for a list of terms |\n| `find_competitors` | Which apps keep appearing across *your* terms, in a given country |\n| `competitor_keywords` | Terms a rival is likely targeting, from its public name |\n| `get_app` | Public details for any app: ratings, genres, price, dates |\n\nEvery tool takes a `country` (89 supported). An unknown one is **refused**, never silently answered\nwith US data — plausible-looking numbers from the wrong market are worse than an error.\n\n## Country matters more than people expect\n\nThe same two search terms, run in two storefronts:\n\n| | United States | Germany |\n| --- | --- | --- |\n| 1 | Otter Transcribe Voice Notes — 72,463 ratings | Notability: Notizen, PDF, Docs — 66,812 |\n| 2 | Notability: AI Notes & Planner — 452,139 | Goodnotes: KI Notizen, PDF app — 350,180 |\n| 3 | Coconote - AI Note Taker — 16,263 | Otter Transcribe Voice Notes — **467** |\n\nOtter is a giant in the US and a rounding error in Germany. Any single \"competitor list\" is really\none market's list wearing a flag, which is why `find_competitors` is per-country by construction.\n\n## What the scores are, and are not\n\nThey are **ordinal comparators, not search volumes.**\n\nA paid ASO tool sells you \"12,400 searches a month\", modelled from a proprietary panel. Nothing free\ncan produce that number and this does not pretend to. What it produces instead:\n\n- **Traffic** — Apple only autocompletes what people actually search, and it orders suggestions by\n  its own popularity model. So the server types your term one character at a time and finds the\n  *shortest* prefix at which Apple already suggests it, and how high. A term surfacing from four\n  characters at position one is searched far more than one needing eleven characters to appear at\n  position nine.\n- **Difficulty** — how strong the apps already ranking are: median rating count on a log scale (the\n  only free proxy for install base), how many put the term in their app *name* (deliberate\n  targeting, which Apple weights heavily), and how many are free. Median rather than mean, so one\n  giant at position one doesn't make a reachable field look impossible.\n- **Opportunity** — traffic ÷ difficulty, for sorting a candidate list. Always reported beside its\n  two components, because a single blended number is the easiest thing in an ASO report to mistake\n  for a measurement.\n\nEvery result carries the **evidence** behind its score — the prefix, the rank, the sample size, the\nmedian ratings. A number out of 100 with nothing behind it is unarguable; the same number with its\nworking can be checked and disagreed with.\n\nUse them to *rank* candidates and pack a keyword field. Do not use them to forecast installs.\n\n## Data sources, and how solid each is\n\n| Source | Status |\n| --- | --- |\n| `itunes.apple.com/search`, `/lookup` | Apple's **documented** Search API. Stable, public, rate-limited near 20 calls/minute. |\n| App Store autocomplete | **Undocumented.** The only free source of what people type. Can change without notice. |\n\nBecause the second is undocumented, every path degrades rather than throwing — a keyword report\nmissing its popularity column is worth reading; one that dies is not.\n\nThe autocomplete endpoint needs an `X-Apple-Store-Front` header. Without it, it answers **200 with\nan empty list** — not an error — which is why this data appears unavailable to anyone who tries it\nonce.\n\n## Rate limits\n\nApple allows roughly 20 searches a minute per IP. The server serializes every outbound call with a\nminimum gap and caches results for six hours, because a keyword set re-queries the same prefixes\nconstantly (\"lectu\" is hit by every keyword starting with it). Scoring ten keywords costs roughly\nthirty requests, so it takes a minute or two — that is the budget, not a stall. Rate-limit\nrejections come back as `code: \"rate_limited\"` so a caller can tell \"wait\" from \"broken\".\n\n## Development\n\n```bash\nnpm install\nnpm run build     # one self-contained ESM file in dist/\nnode dist/index.js\n```\n\n## Licence\n\nMIT — see [LICENSE](LICENSE). Copyright © 2026 AlgoSoft Technologies Limited.\n","readmeFilename":"README.md"}