Analyse App Store and Google Play reviews in Claude: counts, trends and real quotes for any app.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Search the App Store and Google Play for apps by name in one storefront country (for Google Play the country later picks the review languages). Returns each match's app_id per store, developer, rating and store links. Use it for apps that are not in rivioo_my_apps; ask the user for the country if it is unknown. Omit store to search both stores. Free; delivers no reviews.
App name or keywords.
Two-letter storefront country to search, such as us or gb.
'ios' for the App Store or 'android' for Google Play.
Search the App Store and Google Play for apps by name in one storefront country (for Google Play the country later picks the review languages). Returns each match's app_id per store, developer, rating and store links. Use it for apps that are not in rivioo_my_apps; ask the user for the country if it is unknown. Omit store to search both stores. Free; delivers no reviews.
| Argument | Type | Description |
|---|---|---|
| query* | string | App name or keywords. |
| store | string | 'ios' for the App Store or 'android' for Google Play. |
| country* | string | Two-letter storefront country to search, such as us or gb. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query",
"country"
],
"properties": {
"query": {
"type": "string",
"maxLength": 100,
"minLength": 2,
"description": "App name or keywords."
},
"store": {
"enum": [
"ios",
"android"
],
"type": "string",
"description": "'ios' for the App Store or 'android' for Google Play."
},
"country": {
"type": "string",
"pattern": "^[a-zA-Z]{2}$",
"description": "Two-letter storefront country to search, such as us or gb."
}
}
}Returns a page of full reviews of one app: reviews, not counts. To count how many reviews mention a theme, use rivioo_search_reviews. Every review has a review_id, and a url when the store has one (App Store reviews have no per-review link), to cite when quoting. App Store results are per country. Google Play results are per language, from all countries: the country picks the languages (English plus its main language). Pass review_ids (from rivioo_search_reviews) to read those reviews, or a window with filters to read reviews newest first. response_format concise returns id, rating, date, version, title, body and url; detailed adds language and developer reply. Each review uses one review of quota the first time it reaches this account in 30 days; reading it again in that time is free. Pass next_cursor with the same arguments for the next page.
| Argument | Type | Description |
|---|---|---|
| days | integer | Window of this many days ending now. Defaults to 30. Use posted_from instead for exact dates. |
| limit | integer | Reviews per page, newest first. Default 25. |
| store* | string | 'ios' for the App Store or 'android' for Google Play. |
| app_id* | string | Numeric App Store id (such as 324684580) or Google Play package name (such as com.spotify.music), from rivioo_my_apps or rivioo_find_app. |
| cursor | string | next_cursor from the previous call, with the same arguments, for the next page. |
List the apps this Rivioo user saved: their own apps and competitors, each with store, app_id and default country (for Google Play the default country picks the review languages). Use it to look up an app the user names before calling rivioo_review_stats, rivioo_search_reviews or rivioo_get_reviews. Free; delivers no reviews.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Exact rating distribution for one app over a window: total reviews, average rating, reviews per star and developer replies, also by app version (newest first, then other and unknown) and by week (weeks start Monday, UTC). Counts are the reviews Rivioo holds in the window, not users or every review ever written. App Store results are per country. Google Play results are per language, from all countries: the country picks the languages (English plus its main language). Use it for ratings, versions and weekly trends, and before reading reviews to see when ratings changed. Free; returns no review text. Collects newer reviews automatically when held reviews are older than max_age_hours.
| Argument | Type | Description |
|---|---|---|
| days | integer | Window of this many days ending now. Defaults to 30. Use posted_from instead for exact dates. |
| store* | string | 'ios' for the App Store or 'android' for Google Play. |
| app_id* | string | Numeric App Store id (such as 324684580) or Google Play package name (such as com.spotify.music), from rivioo_my_apps or rivioo_find_app. |
| country | string | Two-letter storefront country such as us or gb. For the App Store it picks the country's reviews; for Google Play it picks the review languages (English plus the country's main language), read from all countries. Optional for saved apps, which use the user's default country. |
| app_version | string |
Exact counts of the reviews of one app that mention specific words, plus snippets with review IDs. It is the tool for "how many reviews mention X" questions and for sizing themes found while reading reviews with rivioo_get_reviews. App Store results are per country. Google Play results are per language, from all countries: the country picks the languages (English plus its main language). any_of matches reviews containing at least one term; all_of requires every term; both can be combined. Matching is literal and case-insensitive on word starts: "crash" finds crashes and crashed, "ad" does not find "bad". A term with spaces matches those words in sequence. Chinese, Japanese, Korean and Thai terms match anywhere. Terms are not translated, so reviews in another language match only terms in that language. Returns the reviews in the window, the matching reviews, counts per term and per star, and up to limit snippets newest first, each with review_id and url when the store has one. Counts are free; each snippet uses one review of quota the first time that review reaches this account in 30 days. Pass next_cursor with the same arguments for more snippets.
| Argument | Type | Description |
|---|---|---|
| days | integer | Window of this many days ending now. Defaults to 30. Use posted_from instead for exact dates. |
| limit | integer | Snippets to return, newest first. Default 15. |
| store* | string | 'ios' for the App Store or 'android' for Google Play. |
| all_of | array | Match only reviews containing every one of these terms. |
| country | string | Two-letter storefront country such as us or gb. For the App Store it picks the country's reviews; for Google Play it picks the review languages (English plus the country's main language), read from all countries. Optional for saved apps, which use the user's default country. |
| ratings | array | Only these star ratings, such as [1, 2]. |
| review_ids | array | Read exactly these reviews. Window and filters are ignored. |
| app_version | string | Only reviews of this exact app version. |
| posted_from | string | Window start, inclusive, in UTC unless an offset is given. Use instead of days. |
| max_age_hours | integer | Reuse reviews collected within this many hours; older data is collected again automatically (newest reviews only). Default 24. |
| posted_before | string | Window end, exclusive. Defaults to now. |
| response_format | string |
| has_developer_reply | boolean | true for reviews the developer replied to, false for reviews without a reply. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"store",
"app_id"
],
"properties": {
"days": {
"type": "integer",
"maximum": 365,
"minimum": 1,
"description": "Window of this many days ending now. Defaults to 30. Use posted_from instead for exact dates."
},
"limit": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1,
"description": "Reviews per page, newest first. Default 25."
},
"store": {
"enum": [
"ios",
"android"
],
"type": "string",
"description": "'ios' for the App Store or 'android' for Google Play."
},
"app_id": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "Numeric App Store id (such as 324684580) or Google Play package name (such as com.spotify.music), from rivioo_my_apps or rivioo_find_app."
},
"cursor": {
"type": "string",
"maxLength": 4096,
"minLength": 1,
"description": "next_cursor from the previous call, with the same arguments, for the next page."
},
"country": {
"type": "string",
"pattern": "^[a-zA-Z]{2}$",
"description": "Two-letter storefront country such as us or gb. For the App Store it picks the country's reviews; for Google Play it picks the review languages (English plus the country's main language), read from all countries. Optional for saved apps, which use the user's default country."
},
"ratings": {
"type": "array",
"items": {
"type": "integer",
"maximum": 5,
"minimum": 1
},
"maxItems": 5,
"minItems": 1,
"description": "Only these star ratings, such as [1, 2]."
},
"review_ids": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Read exactly these reviews. Window and filters are ignored."
},
"app_version": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Only reviews of this exact app version."
},
"posted_from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,6})?)?(Z|[+-]\\d{2}:?\\d{2}))?$",
"description": "Window start, inclusive, in UTC unless an offset is given. Use instead of days."
},
"max_age_hours": {
"type": "integer",
"default": 24,
"maximum": 720,
"minimum": 1,
"description": "Reuse reviews collected within this many hours; older data is collected again automatically (newest reviews only). Default 24."
},
"posted_before": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,6})?)?(Z|[+-]\\d{2}:?\\d{2}))?$",
"description": "Window end, exclusive. Defaults to now."
},
"response_format": {
"enum": [
"concise",
"detailed"
],
"type": "string",
"default": "concise"
},
"has_developer_reply": {
"type": "boolean",
"description": "true for reviews the developer replied to, false for reviews without a reply."
}
}
}| Only reviews of this exact app version. |
| posted_from | string | Window start, inclusive, in UTC unless an offset is given. Use instead of days. |
| max_age_hours | integer | Reuse reviews collected within this many hours; older data is collected again automatically (newest reviews only). Default 24. |
| posted_before | string | Window end, exclusive. Defaults to now. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"store",
"app_id"
],
"properties": {
"days": {
"type": "integer",
"maximum": 365,
"minimum": 1,
"description": "Window of this many days ending now. Defaults to 30. Use posted_from instead for exact dates."
},
"store": {
"enum": [
"ios",
"android"
],
"type": "string",
"description": "'ios' for the App Store or 'android' for Google Play."
},
"app_id": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "Numeric App Store id (such as 324684580) or Google Play package name (such as com.spotify.music), from rivioo_my_apps or rivioo_find_app."
},
"country": {
"type": "string",
"pattern": "^[a-zA-Z]{2}$",
"description": "Two-letter storefront country such as us or gb. For the App Store it picks the country's reviews; for Google Play it picks the review languages (English plus the country's main language), read from all countries. Optional for saved apps, which use the user's default country."
},
"app_version": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Only reviews of this exact app version."
},
"posted_from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,6})?)?(Z|[+-]\\d{2}:?\\d{2}))?$",
"description": "Window start, inclusive, in UTC unless an offset is given. Use instead of days."
},
"max_age_hours": {
"type": "integer",
"default": 24,
"maximum": 720,
"minimum": 1,
"description": "Reuse reviews collected within this many hours; older data is collected again automatically (newest reviews only). Default 24."
},
"posted_before": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,6})?)?(Z|[+-]\\d{2}:?\\d{2}))?$",
"description": "Window end, exclusive. Defaults to now."
}
}
}| any_of |
| array |
| Match reviews containing at least one of these terms, such as ["crash", "freeze"]. |
| app_id* | string | Numeric App Store id (such as 324684580) or Google Play package name (such as com.spotify.music), from rivioo_my_apps or rivioo_find_app. |
| cursor | string | next_cursor from the previous call, with the same arguments, for the next page. |
| country | string | Two-letter storefront country such as us or gb. For the App Store it picks the country's reviews; for Google Play it picks the review languages (English plus the country's main language), read from all countries. Optional for saved apps, which use the user's default country. |
| ratings | array | Only these star ratings, such as [1, 2]. |
| app_version | string | Only reviews of this exact app version. |
| posted_from | string | Window start, inclusive, in UTC unless an offset is given. Use instead of days. |
| max_age_hours | integer | Reuse reviews collected within this many hours; older data is collected again automatically (newest reviews only). Default 24. |
| posted_before | string | Window end, exclusive. Defaults to now. |
| has_developer_reply | boolean | true for reviews the developer replied to, false for reviews without a reply. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"store",
"app_id"
],
"properties": {
"days": {
"type": "integer",
"maximum": 365,
"minimum": 1,
"description": "Window of this many days ending now. Defaults to 30. Use posted_from instead for exact dates."
},
"limit": {
"type": "integer",
"default": 15,
"maximum": 50,
"minimum": 1,
"description": "Snippets to return, newest first. Default 15."
},
"store": {
"enum": [
"ios",
"android"
],
"type": "string",
"description": "'ios' for the App Store or 'android' for Google Play."
},
"all_of": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60,
"minLength": 1
},
"maxItems": 5,
"minItems": 1,
"description": "Match only reviews containing every one of these terms."
},
"any_of": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60,
"minLength": 1
},
"maxItems": 10,
"minItems": 1,
"description": "Match reviews containing at least one of these terms, such as [\"crash\", \"freeze\"]."
},
"app_id": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "Numeric App Store id (such as 324684580) or Google Play package name (such as com.spotify.music), from rivioo_my_apps or rivioo_find_app."
},
"cursor": {
"type": "string",
"maxLength": 4096,
"minLength": 1,
"description": "next_cursor from the previous call, with the same arguments, for the next page."
},
"country": {
"type": "string",
"pattern": "^[a-zA-Z]{2}$",
"description": "Two-letter storefront country such as us or gb. For the App Store it picks the country's reviews; for Google Play it picks the review languages (English plus the country's main language), read from all countries. Optional for saved apps, which use the user's default country."
},
"ratings": {
"type": "array",
"items": {
"type": "integer",
"maximum": 5,
"minimum": 1
},
"maxItems": 5,
"minItems": 1,
"description": "Only these star ratings, such as [1, 2]."
},
"app_version": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Only reviews of this exact app version."
},
"posted_from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,6})?)?(Z|[+-]\\d{2}:?\\d{2}))?$",
"description": "Window start, inclusive, in UTC unless an offset is given. Use instead of days."
},
"max_age_hours": {
"type": "integer",
"default": 24,
"maximum": 720,
"minimum": 1,
"description": "Reuse reviews collected within this many hours; older data is collected again automatically (newest reviews only). Default 24."
},
"posted_before": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,6})?)?(Z|[+-]\\d{2}:?\\d{2}))?$",
"description": "Window end, exclusive. Defaults to now."
},
"has_developer_reply": {
"type": "boolean",
"description": "true for reviews the developer replied to, false for reviews without a reply."
}
}
}