YouTube transcripts (video, channel, search), Google Trends, Google Play and App Store reviews.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Start with the shared demo key wdt_demo_public; for a personal key open a GitHub issue. A RapidAPI key does not work here.
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.
Rating, title, text, author, app version and the review date for any iOS App Store app, plus the app's own metadata row (name, seller, price, average rating, rating count).
App Store URL or numeric app id such as 389801252.
Maximum reviews per app, 1-500. Default 100.
Return every field as JSON instead of a compact summary. Default false.
mostRecent (default) or mostHelpful.
Two-letter country code. Default us.
1-5. Keep only reviews at or below this rating.
1-5. Keep only reviews at or above this rating.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Rating, title, text, author, app version and the review date for any iOS App Store app, plus the app's own metadata row (name, seller, price, average rating, rating count).
| Argument | Type | Description |
|---|---|---|
| app* | string | App Store URL or numeric app id such as 389801252. |
| max | integer | Maximum reviews per app, 1-500. Default 100. |
| raw | boolean | Return every field as JSON instead of a compact summary. Default false. |
| sort | string | mostRecent (default) or mostHelpful. |
| country | string | Two-letter country code. Default us. |
| maxRating | integer | 1-5. Keep only reviews at or below this rating. |
| minRating | integer | 1-5. Keep only reviews at or above this rating. |
{
"type": "object",
"required": [
"app"
],
"properties": {
"app": {
"type": "string",
"description": "App Store URL or numeric app id such as 389801252."
},
"max": {
"type": "integer",
"description": "Maximum reviews per app, 1-500. Default 100."
},
"raw": {
"type": "boolean",
"description": "Return every field as JSON instead of a compact summary. Default false."
},
"sort": {
"type": "string",
"description": "mostRecent (default) or mostHelpful."
},
"country": {
"type": "string",
"description": "Two-letter country code. Default us."
},
"maxRating": {
"type": "integer",
"description": "1-5. Keep only reviews at or below this rating."
},
"minRating": {
"type": "integer",
"description": "1-5. Keep only reviews at or above this rating."
}
}
}Rating, text, author, thumbs-up count, app version and the developer's reply for any Google Play app.
| Argument | Type | Description |
|---|---|---|
| app* | string | Google Play URL or package name such as com.whatsapp. |
| max | integer | Maximum reviews per app. Default 100. |
| raw | boolean | Return every field as JSON instead of a compact summary. Default false. |
| lang | string | Language code. Default en. |
| rating | integer | 1-5 to keep only that star rating. |
| country | string | Two-letter country code. Default us. |
{
"type": "object",
"required": [
"app"
],
"properties": {
"app": {
"type": "string",
"description": "Google Play URL or package name such as com.whatsapp."
},
"max": {
"type": "integer",
"description": "Maximum reviews per app. Default 100."
},
"raw": {
"type": "boolean",
"description": "Return every field as JSON instead of a compact summary. Default false."
},
"lang": {
"type": "string",
"description": "Language code. Default en."
},
"rating": {
"type": "integer",
"description": "1-5 to keep only that star rating."
},
"country": {
"type": "string",
"description": "Two-letter country code. Default us."
}
}
}For up to five keywords: relative search interest over a timeframe, interest broken down by region, and the top and rising related queries. No browser, straight from the Trends endpoints.
| Argument | Type | Description |
|---|---|---|
| geo | string | Country or region code such as US or GB. Empty means worldwide. |
| raw | boolean | Return every field as JSON instead of a compact summary. Default false. |
| keyword* | string | Search term. Comma-separate up to 5 to compare. |
| related | boolean | Include top and rising related queries. Default true. |
| byRegion | boolean | Include the interest-by-region breakdown. Default true. |
| timeframe | string | Any Trends range, e.g. now 7-d, today 3-m, today 5-y. Default today 12-m. |
{
"type": "object",
"required": [
"keyword"
],
"properties": {
"geo": {
"type": "string",
"description": "Country or region code such as US or GB. Empty means worldwide."
},
"raw": {
"type": "boolean",
"description": "Return every field as JSON instead of a compact summary. Default false."
},
"keyword": {
"type": "string",
"description": "Search term. Comma-separate up to 5 to compare."
},
"related": {
"type": "boolean",
"description": "Include top and rising related queries. Default true."
},
"byRegion": {
"type": "boolean",
"description": "Include the interest-by-region breakdown. Default true."
},
"timeframe": {
"type": "string",
"description": "Any Trends range, e.g. now 7-d, today 3-m, today 5-y. Default today 12-m."
}
}
}Enumerates the newest videos of a channel, @handle or playlist and returns each video's metadata and transcript in a single call. Pass "search: your query" instead of a channel to go straight from a question to transcripts without knowing which creator to ask - the top results come back with full transcripts. Useful for building a corpus on a topic or from one creator.
| Argument | Type | Description |
|---|---|---|
| max | integer | How many of the newest videos to fetch. Default 25, max 500. |
| raw | boolean | Return every field as JSON instead of a compact summary. Default false. |
| lang | string | Preferred caption language. Default en. |
| source* | string | @handle, channel URL or id, a playlist URL, or "search: your query" to search YouTube. |
{
"type": "object",
"required": [
"source"
],
"properties": {
"max": {
"type": "integer",
"description": "How many of the newest videos to fetch. Default 25, max 500."
},
"raw": {
"type": "boolean",
"description": "Return every field as JSON instead of a compact summary. Default false."
},
"lang": {
"type": "string",
"description": "Preferred caption language. Default en."
},
"source": {
"type": "string",
"description": "@handle, channel URL or id, a playlist URL, or \"search: your query\" to search YouTube."
}
}
}Returns the transcript text for each video plus its language, whether the captions were auto-generated, word count, title and channel. Comma-separate up to 50 video URLs or ids. Videos with no captions come back with a status instead of text.
| Argument | Type | Description |
|---|---|---|
| raw | boolean | Return every field as JSON instead of a compact summary. Default false. |
| url* | string | YouTube URL or 11-character video id. Comma-separate up to 50. |
| lang | string | Preferred language codes in order, comma separated. Default en. |
| segments | boolean | Include timestamped segments as well as full text. |
| translateTo | string | Translate the transcript into this language code. |
{
"type": "object",
"required": [
"url"
],
"properties": {
"raw": {
"type": "boolean",
"description": "Return every field as JSON instead of a compact summary. Default false."
},
"url": {
"type": "string",
"description": "YouTube URL or 11-character video id. Comma-separate up to 50."
},
"lang": {
"type": "string",
"description": "Preferred language codes in order, comma separated. Default en."
},
"segments": {
"type": "boolean",
"description": "Include timestamped segments as well as full text."
},
"translateTo": {
"type": "string",
"description": "Translate the transcript into this language code."
}
}
}