appindex
appindex is a small local bridge to the hosted
AppNiche MCP server, which exposes live App Store and
Google Play data. Search both stores across more than
twenty-five filters, pull one app's full record, read
its historical metrics and its listing-change
timeline, score keywords for difficulty and
opportunity, read app reviews, and list the supported
country codes — all from your agent, with no local
copy of the catalogue.
The bridge keeps no app data of its own. It serves
the upstream server's tool list locally, exactly as
captured from the live endpoint, and forwards each
tool call upstream, returning the result untouched.
A few tools state a per-call credit cost in their
descriptions; those credits are charged by the
upstream service against the caller's own
pre-existing AppNiche account. There is no tool here
that buys credits, creates an account, or mints a
key, and the bridge adds none.
Tools
search_apps — search App Store and Google Play
apps across filters for store, category, games and
game genres, language (including a
not_languages localization-gap filter), price
model, rating, review count, download and revenue
estimates, release and update recency, and
review-growth direction, sorted by any column.
Every filter is optional.
get_app_detail — return one app's full record.
Required: app_id (a canonical id such as
"apple:284882215" or "google:com.spotify.music",
a bare Apple track id, an Android package name, or
a store URL).
get_app_historicals — return historical metric
points for one app, daily up to 90 days and weekly
beyond. Required: store_id. Optional: store,
days.
get_app_timeline — return one app's listing
change history, newest first: versions, icon and
screenshot redesigns, price and business-model
changes, renames, category moves, description
rewrites and more, grouped by day. Required:
store_id. Optional: store, days, before.
get_keyword_difficulty — score one keyword for
difficulty and opportunity on the App Store or
Google Play. Required: keyword. Optional:
store, country, language.
batch_keyword_difficulty — score up to 10
keywords in one call. Required: keywords.
Optional: store, country, language.
get_app_reviews — read app reviews: pass
app_id for live store reviews of any app, or
omit it to read the workspace's tracked apps with
sentiment, topics and improvement areas attached.
Every argument is optional.
get_supported_countries — return the supported
country codes. Takes no arguments.
Configuration
APPNICHE_MCP_URL (optional) — override the
upstream endpoint. Defaults to
https://api.getappniche.com/mcp. (The override
hook is this rebuild's own labelled reconstruction.)
GETAPPNICHE_API_KEY (optional) — when set, every
upstream request carries an
Authorization: Bearer <key> header, for the
caller's own AppNiche key created in their
AppNiche dashboard settings. When it is not set,
no key header is sent. (The header name and the
env name are pinned by the original's registry
record; the Bearer scheme and this env forwarding
are labelled reconstructions — the original
surface was captured keyless.)
Forwarding mechanics
On the first tool call the client opens a streamable
HTTP session with the upstream: a JSON-RPC
initialize request (protocolVersion 2025-03-26,
clientInfo name appindex), then a
notifications/initialized notification, then the
tools/call request carrying the caller's arguments
unchanged. When the upstream answers initialize
with an Mcp-Session-Id header, that value rides on
every later request of the session, which is reused
for the life of the process. Replies may arrive as
plain JSON or as server-sent events; both are read.
Successful upstream results pass through verbatim,
including any isError flag the upstream sets.
Failures — a JSON-RPC error, a non-2xx status, an
unreadable response, or a request that cannot be
completed — come back as an isError result whose
text starts with appindex error: (this rendering
is this rebuild's own labelled reconstruction).
CLI
Each tool is also a subcommand taking one JSON
argument string:
Exit codes: 0 on success, 1 on an isError
result, 2 on a usage error.
MCP server
MCP client config:
Docker
The container's default command is mcp, so the first
form is a stdio MCP server; any other arguments reach
the CLI normally.
Development
The test suite runs entirely against a stubbed
JSON-RPC upstream — no live network calls.
License
MIT — see LICENSE.