CreativeScope — Mobile Game Ad Creative Intelligence
Official12 tools
by creativescope
Mobile-game ad creative intelligence across SDK ad networks: search, rankings, AI hook analysis.
ai.creativescope/creative-intelligence MCP Server
This hosted Model Context Protocol (MCP) server provides mobile-game ad creative intelligence to any MCP-enabled agent. It exposes capabilities for creative search, rankings, and AI hook analysis across SDK ad networks. The server is designed for live access to creative intelligence data relevant to mobile advertising.
🛠️ Key Features
Mobile-game ad creative intelligence
Creative search across SDK ad networks
Rankings
AI hook analysis
Tool surface area: 12 tools
🚀 Use Cases
Searching mobile-game ad creatives from SDK ad networks
Comparing or evaluating creatives using rankings
Extracting or analyzing “hooks” from ad creative using AI hook analysis
⚡ Developer Benefits
Hosted MCP server for AI agents
Live access to mobile-game advertising creative intelligence
Standardized MCP integration with 12 available tools
⚠️ Limitations
Scope is limited to mobile-game ad creative intelligence and the listed functions (search, rankings, AI hook analysis) across SDK ad networks.
Search mobile game ad creatives by keyword or visual-description-like natural language. For an English request, send the original English concepts only. The service internally expands genre, hook, mood, art-style, and gameplay-mechanic concepts to Chinese source-label equivalents for retrieval; generated translations must not be inserted into the public request. Use this for finding UGC-style ads, winning creatives, opening hook examples, playable ads, and platform/country/genre slices. Results include the original creative asset as media_url when available. Creative tag fields are normalized to English in the result. Example: 'Find UGC-style match-3 video ads in the US.'
Parameters8
query
string
required
Natural-language search query in the user's original language. Do not append generated Chinese translations to an English query; the service performs Chinese source-label expansion internally.
ISO 3166-1 alpha-2 country code, for example US, JP, KR, GB.
genre
string | null
optional
Game genre or sub-genre in the user's original language, for example match-3, puzzle, or SLG. Chinese source-label expansion is internal.
format
string | null
optional
Creative format: image, video, or playable.
orientation
string | null
optional
Optional creative orientation: portrait, landscape, or square. For video, this is derived from existing media width and height metadata.
date_range
string | null
optional
Date range. Supports last_7_days, last_30_days, last_90_days, or 'YYYY-MM-DD..YYYY-MM-DD'. Defaults to last_90_days.
limit
integer | null
optional
Number of creatives to return. Maximum 20.
Raw schema
{
"type": "object",
"properties": {
"query": {
"description": "Natural-language search query in the user's original language. Do not append generated Chinese translations to an English query; the service performs Chinese source-label expansion internally.",
"type": "string"
},
"platform": {
"description": "Ad platform filter. Supported values: facebook, instagram, messenger, audience_network, threads, admob, youtube, tiktok, mintegral, unity, applovin, ironsource, vungle, pangle.",
"type": [
"string",
"null"
],
"default": null
},
"country": {
"description": "ISO 3166-1 alpha-2 country code, for example US, JP, KR, GB.",
"type": [
"string",
"null"
],
"default": null
},
"genre": {
"description": "Game genre or sub-genre in the user's original language, for example match-3, puzzle, or SLG. Chinese source-label expansion is internal.",
"type": [
"string",
"null"
],
"default": null
},
"format": {
"description": "Creative format: image, video, or playable.",
"type": [
"string",
"null"
],
"default": null
},
"orientation": {
"description": "Optional creative orientation: portrait, landscape, or square. For video, this is derived from existing media width and height metadata.",
"type": [
"string",
"null"
],
"default": null
},
"date_range": {
"description": "Date range. Supports last_7_days, last_30_days, last_90_days, or 'YYYY-MM-DD..YYYY-MM-DD'. Defaults to last_90_days.",
"type": [
"string",
"null"
],
"default": null
},
"limit": {
"description": "Number of creatives to return. Maximum 20.",
"type": [
"integer",
"null"
],
"default": null
}
},
"required": [
"query"
]
}
get_creative_detail
Get one creative's delivery metadata and English creative insights, including opening hook signals, scene descriptions, and creative patterns when available. Example: 'Why does this winning creative work?'
Parameters1
creative_id
string
required
Creative ID returned by search_creatives, find_similar_creatives, or get_creative_rankings.
Raw schema
{
"type": "object",
"properties": {
"creative_id": {
"description": "Creative ID returned by search_creatives, find_similar_creatives, or get_creative_rankings.",
"type": "string"
}
},
"required": [
"creative_id"
]
}
get_creative_rankings
Get global or genre-level rising creative rankings by day, week, or month, or evergreen creative rankings from the monthly snapshot; platform and country filters are not supported. Evergreen data is monthly only; day/week requests are normalized to month and disclosed in request_echo. Use this to answer what's rising this week, what evergreen creatives keep working, or which hook patterns repeat in a genre. For platform- or country-filtered discovery, use search_creatives and do not describe those results as an official rising or evergreen ranking. Creative tag fields are normalized to English in the result. Example: 'Which SLG creatives are rising this month?'
Parameters4
type
string
required
Ranking type: rising or evergreen.
period
string
required
Ranking period: day, week, or month. Evergreen supports month only; other values are normalized to month.
genre
string | null
optional
Optional genre/category filter in the user's original language, for example match-3 or SLG. Chinese source-label expansion is internal.
limit
integer | null
optional
Number of ranked creatives to return. Maximum 20.
Raw schema
{
"type": "object",
"properties": {
"type": {
"description": "Ranking type: rising or evergreen.",
"type": "string"
},
"period": {
"description": "Ranking period: day, week, or month. Evergreen supports month only; other values are normalized to month.",
"type": "string"
},
"genre": {
"description": "Optional genre/category filter in the user's original language, for example match-3 or SLG. Chinese source-label expansion is internal.",
"type": [
"string",
"null"
],
"default": null
},
"limit": {
"description": "Number of ranked creatives to return. Maximum 20.",
"type": [
"integer",
"null"
],
"default": null
}
},
"required": [
"type",
"period"
]
}
generate_weekly_creative_brief
Generate a compact creative brief from recent high-signal mobile game ads. Use this for weekly inspiration, hook mining, competitor creative planning, and UA brainstorming. Creative tag fields are normalized to English in the result. Example: 'Create this week's puzzle-game creative brief for Facebook.'
Parameters6
genre
string | null
optional
Game genre or sub-genre in the user's original language, for example match-3 or puzzle. Chinese source-label expansion is internal.
ISO 3166-1 alpha-2 country code, for example US, JP, KR, GB.
format
string | null
optional
Creative format: image, video, or playable.
date_range
string | null
optional
Date range. Supports last_7_days, last_30_days, last_90_days, or 'YYYY-MM-DD..YYYY-MM-DD'. Defaults to last_7_days.
limit
integer | null
optional
Number of representative creatives to include. Maximum 20.
Raw schema
{
"type": "object",
"properties": {
"genre": {
"description": "Game genre or sub-genre in the user's original language, for example match-3 or puzzle. Chinese source-label expansion is internal.",
"type": [
"string",
"null"
],
"default": null
},
"platform": {
"description": "Ad platform filter. Supported values: facebook, instagram, messenger, audience_network, threads, admob, youtube, tiktok, mintegral, unity, applovin, ironsource, vungle, pangle.",
"type": [
"string",
"null"
],
"default": null
},
"country": {
"description": "ISO 3166-1 alpha-2 country code, for example US, JP, KR, GB.",
"type": [
"string",
"null"
],
"default": null
},
"format": {
"description": "Creative format: image, video, or playable.",
"type": [
"string",
"null"
],
"default": null
},
"date_range": {
"description": "Date range. Supports last_7_days, last_30_days, last_90_days, or 'YYYY-MM-DD..YYYY-MM-DD'. Defaults to last_7_days.",
"type": [
"string",
"null"
],
"default": null
},
"limit": {
"description": "Number of representative creatives to include. Maximum 20.",
"type": [
"integer",
"null"
],
"default": null
}
}
}
search_advertisers
Search advertisers, game studios, or mobile games by name and optional genre, region, and platform filters. Use the returned advertiser_id with get_advertiser_profile. Example: 'Find the advertiser for Last War.'
Parameters5
query
string
required
Advertiser, studio, or game name query.
genre
string | null
optional
Game genre or sub-genre filter in the user's original language. Chinese source-label expansion is internal.
region
string | null
optional
Region or ISO country code filter. Exact matching depends on current availability metadata.
platform
string | null
optional
Optional ad platform filter. Supported values include facebook, instagram, tiktok, admob, youtube, unity, applovin, mintegral, ironsource, vungle, and pangle.
limit
integer | null
optional
Number of advertisers to return. Maximum 20.
Raw schema
{
"type": "object",
"properties": {
"query": {
"description": "Advertiser, studio, or game name query.",
"type": "string"
},
"genre": {
"description": "Game genre or sub-genre filter in the user's original language. Chinese source-label expansion is internal.",
"type": [
"string",
"null"
],
"default": null
},
"region": {
"description": "Region or ISO country code filter. Exact matching depends on current availability metadata.",
"type": [
"string",
"null"
],
"default": null
},
"platform": {
"description": "Optional ad platform filter. Supported values include facebook, instagram, tiktok, admob, youtube, unity, applovin, mintegral, ironsource, vungle, and pangle.",
"type": [
"string",
"null"
],
"default": null
},
"limit": {
"description": "Number of advertisers to return. Maximum 20.",
"type": [
"integer",
"null"
],
"default": null
}
},
"required": [
"query"
]
}
get_advertiser_profile
Get an advertiser or game profile, including recent ad activity, creative volume, target countries, and platforms. Creative tag fields are normalized to English in the result. Example: 'Which markets and platforms is this game scaling on?'
Parameters1
advertiser_id
string
required
Advertiser ID returned by search_advertisers or as game_id in creative results.
Raw schema
{
"type": "object",
"properties": {
"advertiser_id": {
"description": "Advertiser ID returned by search_advertisers or as game_id in creative results.",
"type": "string"
}
},
"required": [
"advertiser_id"
]
}
get_reference_image_search_results
Get completed reference-image search results. If the job is still running, returns polling guidance. Example: 'Show the matches from my reference-image search.'
Parameters2
job_id
string
required
Job ID returned by submit_reference_image_search.
limit
integer | null
optional
Maximum number of hydrated creative records to return. Maximum 20.
Raw schema
{
"type": "object",
"properties": {
"job_id": {
"description": "Job ID returned by submit_reference_image_search.",
"type": "string"
},
"limit": {
"description": "Maximum number of hydrated creative records to return. Maximum 20.",
"type": [
"integer",
"null"
],
"default": null
}
},
"required": [
"job_id"
]
}
get_game_rank_markets
List the countries, app-store categories, stores, and ranking types where a game appeared on a chart during a date range. Returns each observed dimension with best rank, latest rank, and ranked-day count. Ranking types are free, store-paid, and top-grossing. Only Google Play and iPhone App Store are exposed; iPad rankings are excluded. Date range defaults to the last 90 days and cannot exceed 365 days.
Parameters6
game_id
string
required
Encrypted game ID returned by search_advertisers or as game_id/advertiser_id in other results.
date_from
string | null
optional
Start date in YYYY-MM-DD. Defaults to 89 days before date_to.
date_to
string | null
optional
End date in YYYY-MM-DD. Defaults to today.
store
string | null
optional
Store: all, google_play, or app_store. Defaults to all.
rank_types
array | null
optional
Ranking types: free, store_paid, grossing. Defaults to all three.
limit
integer | null
optional
Maximum dimension rows to return. Maximum 200; defaults to 100.
Raw schema
{
"type": "object",
"properties": {
"game_id": {
"description": "Encrypted game ID returned by search_advertisers or as game_id/advertiser_id in other results.",
"type": "string"
},
"date_from": {
"description": "Start date in YYYY-MM-DD. Defaults to 89 days before date_to.",
"type": [
"string",
"null"
],
"default": null
},
"date_to": {
"description": "End date in YYYY-MM-DD. Defaults to today.",
"type": [
"string",
"null"
],
"default": null
},
"store": {
"description": "Store: all, google_play, or app_store. Defaults to all.",
"type": [
"string",
"null"
],
"default": null
},
"rank_types": {
"description": "Ranking types: free, store_paid, grossing. Defaults to all three.",
"type": [
"array",
"null"
],
"items": {
"type": [
"string",
"null"
]
},
"default": null
},
"limit": {
"description": "Maximum dimension rows to return. Maximum 200; defaults to 100.",
"type": [
"integer",
"null"
],
"default": null
}
},
"required": [
"game_id"
]
}
get_game_rank_trend
Get one mobile game's daily app-store ranking performance over a date range. Returns free, store-paid, and top-grossing ranking series with best/latest rank and the matched country, category, and store. Use mode=best to select the game's best daily rank across supported countries and categories, or mode=exact for one country/category/store combination. Supported stores are Google Play, iPhone App Store, and all (Google Play plus iPhone App Store). Date range defaults to the last 90 days and cannot exceed 365 days.
Parameters8
game_id
string
required
Encrypted game ID returned by search_advertisers or as game_id/advertiser_id in other results.
date_from
string | null
optional
Start date in YYYY-MM-DD. Defaults to 89 days before date_to.
date_to
string | null
optional
End date in YYYY-MM-DD. Defaults to today.
mode
string | null
optional
Query mode: best or exact. Defaults to best.
store
string | null
optional
Store: all, google_play, or app_store. Used as a constraint in both modes; defaults to all.
country
string | null
optional
ISO 3166-1 alpha-2 country code. Used by exact mode; defaults to US.
category
string | null
optional
App-store category. Used by exact mode; defaults to all categories.
rank_types
array | null
optional
Ranking types: free, store_paid, grossing. Defaults to all three.
Raw schema
{
"type": "object",
"properties": {
"game_id": {
"description": "Encrypted game ID returned by search_advertisers or as game_id/advertiser_id in other results.",
"type": "string"
},
"date_from": {
"description": "Start date in YYYY-MM-DD. Defaults to 89 days before date_to.",
"type": [
"string",
"null"
],
"default": null
},
"date_to": {
"description": "End date in YYYY-MM-DD. Defaults to today.",
"type": [
"string",
"null"
],
"default": null
},
"mode": {
"description": "Query mode: best or exact. Defaults to best.",
"type": [
"string",
"null"
],
"default": null
},
"store": {
"description": "Store: all, google_play, or app_store. Used as a constraint in both modes; defaults to all.",
"type": [
"string",
"null"
],
"default": null
},
"country": {
"description": "ISO 3166-1 alpha-2 country code. Used by exact mode; defaults to US.",
"type": [
"string",
"null"
],
"default": null
},
"category": {
"description": "App-store category. Used by exact mode; defaults to all categories.",
"type": [
"string",
"null"
],
"default": null
},
"rank_types": {
"description": "Ranking types: free, store_paid, grossing. Defaults to all three.",
"type": [
"array",
"null"
],
"items": {
"type": [
"string",
"null"
]
},
"default": null
}
},
"required": [
"game_id"
]
}
submit_reference_image_search
Submit a reference-image similarity search as an asynchronous job. Use this when the user provides a directly downloadable public HTTPS image URL. The URL must resolve to image bytes without login or hotlink protection; HTML pages, local paths, and base64 are not supported. The embedding provider validates image format and size asynchronously and returns IMAGE_FETCH_FAILED, INVALID_IMAGE, or EMBEDDING_MODEL_ERROR when processing cannot continue. Genre aliases are normalized internally. If a normalized genre produces no candidates, the completed result explicitly marks a visual-only fallback instead of silently returning an empty set. Example: 'Find ads visually similar to this reference image.'
Parameters6
image_url
string
required
Directly downloadable public HTTPS image URL. It must return image bytes without login or hotlink protection. Do not pass an HTML page, local path, base64, or expiring authenticated URL.
country
string | null
optional
Optional ISO 3166-1 alpha-2 country code, for example US, JP, KR, GB.
genre
string | null
optional
Optional game genre or sub-genre, for example SLG, match-3, puzzle, RPG. Aliases are normalized internally. If the normalized genre has no candidates, results may use an explicitly disclosed visual-only fallback.
platform
string | null
optional
Optional platform filter, for example facebook, instagram, tiktok, youtube, admob.
format
string | null
optional
Optional creative format: image, video, or playable.
limit
integer | null
optional
Number of similar creatives to return when the job completes. Maximum 20.
Raw schema
{
"type": "object",
"properties": {
"image_url": {
"description": "Directly downloadable public HTTPS image URL. It must return image bytes without login or hotlink protection. Do not pass an HTML page, local path, base64, or expiring authenticated URL.",
"type": "string"
},
"country": {
"description": "Optional ISO 3166-1 alpha-2 country code, for example US, JP, KR, GB.",
"type": [
"string",
"null"
],
"default": null
},
"genre": {
"description": "Optional game genre or sub-genre, for example SLG, match-3, puzzle, RPG. Aliases are normalized internally. If the normalized genre has no candidates, results may use an explicitly disclosed visual-only fallback.",
"type": [
"string",
"null"
],
"default": null
},
"platform": {
"description": "Optional platform filter, for example facebook, instagram, tiktok, youtube, admob.",
"type": [
"string",
"null"
],
"default": null
},
"format": {
"description": "Optional creative format: image, video, or playable.",
"type": [
"string",
"null"
],
"default": null
},
"limit": {
"description": "Number of similar creatives to return when the job completes. Maximum 20.",
"type": [
"integer",
"null"
],
"default": null
}
},
"required": [
"image_url"
]
}
find_similar_creatives
Find visually similar creatives using the stored vector of an existing creative. For a concept without an ID, query selects an explainable seed from available creative metadata and then uses the same vector-neighbor search. For an English concept, send the original English terms only. The service resolves Chinese source-label equivalents internally before selecting the seed. Returns creative records ordered from most to least visually similar; low-similarity and near-duplicate results are excluded, and raw similarity scores are not exposed. If request_echo.seed_basis identifies a proxy seed, clearly disclose that limitation instead of presenting the results as an exact concept match. Example: 'Show variants of the toilet run viral creative concept.'
Parameters3
creative_id
string | null
optional
Optional creative ID returned by search_creatives, get_creative_rankings, or get_reference_image_search_results. Supply creative_id or query.
query
string | null
optional
Optional concept query in the user's original language used to select a seed before vector similarity. Do not append generated translations; source-label expansion is internal. Supply query or creative_id.
limit
integer | null
optional
Number of similar creatives to return. Maximum 20.
Raw schema
{
"type": "object",
"properties": {
"creative_id": {
"description": "Optional creative ID returned by search_creatives, get_creative_rankings, or get_reference_image_search_results. Supply creative_id or query.",
"type": [
"string",
"null"
],
"default": null
},
"query": {
"description": "Optional concept query in the user's original language used to select a seed before vector similarity. Do not append generated translations; source-label expansion is internal. Supply query or creative_id.",
"type": [
"string",
"null"
],
"default": null
},
"limit": {
"description": "Number of similar creatives to return. Maximum 20.",
"type": [
"integer",
"null"
],
"default": null
}
}
}
get_reference_image_search_status
Get the processing status of a reference-image search job. Example: 'Is my reference-image search finished yet?'
Parameters1
job_id
string
required
Job ID returned by submit_reference_image_search.
Raw schema
{
"type": "object",
"properties": {
"job_id": {
"description": "Job ID returned by submit_reference_image_search.",
"type": "string"
}
},
"required": [
"job_id"
]
}
Mobile-game ad creative intelligence for any MCP-enabled agent.
CreativeScope is a hosted Model Context Protocol server that gives your AI agent live access to mobile-game advertising creative intelligence — creative search, Rising/Evergreen rankings, advertiser & studio profiles, similar-creative lookup, and AI hook analysis — compiled from publicly available ad placements across major SDK ad networks.
Works with Claude, Codex, Cursor, or any MCP-compatible client. Claude is used only as an example below.
SDK ad-network coverage — beyond the usual Meta Ad Library: AppLovin, Mintegral, Unity, ironSource, Vungle, Pangle, AdMob, TikTok and more.
Game-specialized — genres, opening hooks, playables, UGC styles, art styles, moods, and creative patterns tuned for UA teams.
AI analysis, not just a feed — representative hooks, confidence-scored insights, and "why it's relevant" reasoning returned as structured data your agent can act on.
Connecting
CreativeScope is a remote MCP server.
Endpoint: https://mcp.creativescope.ai/mcp
Transport: Streamable HTTP (stateless)
Auth: OAuth (recommended where supported) or API key (Authorization: Bearer <api_key>, also accepts X-Api-Key: <api_key>)
Claude Desktop / Claude.ai (OAuth — no key needed)
Settings → Connectors → Add connector, paste https://mcp.creativescope.ai/mcp, then authorize on the CreativeScope page. You're connected — all tools available immediately.
API key (other clients)
Get a free key at https://creativescope.ai/mcp — keys look like cs_live_.... Keep them secret; don't commit or share them.
Clients that support remote MCP servers natively can point directly at https://mcp.creativescope.ai/mcp and set the Authorization header to Bearer cs_live_YOUR_KEY.
Tools
Tool
What it does
search_creatives
Search game ad creatives by natural language, platform, country, genre, format, and date range
get_creative_detail
Full detail for one creative: delivery data, tag insights, and raw AI analysis
find_similar_creatives
Find creatives in the same cluster as a given creative_id
search_advertisers
Search advertisers, games, and studios
get_advertiser_profile
Profile for an advertiser or game
submit_reference_image_search
Start an async "find similar by reference image" job
get_reference_image_search_status
Poll a reference-image job's status
get_reference_image_search_results
Fetch results once a reference-image job completes
generate_weekly_creative_brief
Generate a weekly creative brief
get_creative_rankings
Rising / Evergreen creative rankings
get_game_rank_markets
App Store / Google Play chart presence by country, category, store, and rank type
get_game_rank_trend
Daily store-ranking series over a date range (best or exact mode)
Most list tools return up to 20 items per call. Analysis fields are returned in English; some raw ai_analysis fields in get_creative_detail may still contain Chinese pending full localization.
Agent Skills
Ready-made Agent Skills that teach your agent proven
CreativeScope workflows — install the folders from skills/ into
your client (Claude, Codex, or any Agent-Skills-compatible host):
App Store + Google Play chart presence and daily ranking trends for a game (where it's charting, how its position moved)
Start with creativescope-best-practices — the other skills build on it.
Example prompts
"Show me the top rising match-3 ad creatives in the US over the last 30 days."
"Find UGC-style ads with a fail-state opening hook for puzzle games."
"Profile the advertiser behind this creative and show 5 similar creatives."
Plans
Free, Pro, and Team plans differ in tool access and monthly quota. See https://creativescope.ai/pricing. Usage is metered per tool call.
Data
Creative intelligence is compiled from publicly available ad placements and concerns businesses and their public advertising activity, not private individuals. Ad creatives, game titles, and trademarks belong to their respective owners. To request review or removal, contact support@creativescope.ai.
MIT — see LICENSE. This repository contains the public listing and connection metadata for the CreativeScope MCP service; the hosted service itself is proprietary.