apppage
Registry code: 50ebbf99910e455e
Google Play and App Store app data from AppPage.net. Use search_apps to find apps by keyword, browse_category for top free / paid / grossing charts, get_app for full details of one app, find_alternatives for similar apps, get_app_reviews for user reviews, get_app_privacy for Google Play data safety and permissions or Apple's App Privacy labels, and get_developer_apps for a developer's other apps. Android apps are identified by package name (com.whatsapp), iPhone/iPad apps by numeric App Store id (310633997); search_apps, browse_category and get_developer_apps take store=google_play (default)…
- endpoint
- https://apppage.net/mcp
- protocol
- streamable-http ·2025-06-18
- authentication
- none observed
- public key
- none — nobody has proven they own this listing · is it yours? claim it
- karma
- 0 · newcomer
- Is apppage live?
- Yes — it answered the hub's last check (checked 1h ago). It answered 99% of checks over the last 30 days.
- Is apppage free to use?
- Partly — some of its tools are open, others need a key or payment.
- What tools does apppage have?
- 27 tools: find_alternatives, search_apps, get_app_reviews, update_site, resolve_status_incident, create_site, generate_page, refresh_site_from_store, ….
- Is apppage safe to connect?
- The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
90 days 99.6%· all time 99.6%
last good check
of 27 tools
- degraded → live
- live → degraded· timeout after 20000ms
- degraded → live
- live → degraded· timeout after 20000ms
- down → live
- topic
- search & web
- used for
- search app store apps
- get top app charts
- get app reviews
- get app privacy labels
- find similar apps
- takes → gives
- text → data
- tools
- 7 reads
Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.
through this hub
successful
what callers paid
Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.
browse_category reads open 8h ago
List Google Play or App Store top charts (live results): top free, top paid or top grossing apps, overall or in a category. Google Play categories look like game_puzzle or health_and_fitness; App Store categories look like games_puzzle or photo_and_video.
{ "type": "object", "properties": { "chart": { "enum": [ "top_free", "top_paid", "grossing" ], "type": "string", "description": "Which chart: top_free (default), top_paid or grossing." }, "limit": { "type": "integer", "maximum": 30, "minimum": 1, "description": "Max results (1-30, default 10)." }, "store": { "enum": [ "google_play", "app_store" ], "type": "string", "description": "Which store: google_play (Android, default) or app_store (iPhone/iPad)." }, "country": { "type": "string", "description": "Optional two-letter ISO 3166 store country code. Defaults to US." }, "category": { "enum": [ "art_and_design", "auto_and_vehicles", "beauty", "books_and_reference", "business", "comics", "communication", "dating", "education", "entertainment", "events", "finance", "food_and_drink", "health_and_fitness", "house_and_home", "libraries_and_demo", "lifestyle", "maps_and_navigation", "medical", "music_and_audio", "news_and_magazines", "parenting", "personalization", "photography", "productivity", "shopping", "social", "sports", "tools", "travel_and_local", "video_players", "android_wear", "watch_face", "weather", "game", "game_action", "game_adventure", "game_arcade", "game_board", "game_card", "game_casino", "game_casual", "game_educational", "game_music", "game_puzzle", "game_racing", "game_role_playing", "game_simulation", "game_sports", "game_strategy", "game_trivia", "game_word", "family", "books", "games", "games_action", "games_adventure", "games_arcade", "games_board", "games_card", "games_casino", "games_family", "games_music", "games_puzzle", "games_racing", "games_role_playing", "games_simulation", "games_sports", "games_strategy", "games_trivia", "games_word", "magazines_and_newspapers", "music", "navigation", "news", "photo_and_video", "reference", "social_networking", "travel", "utilities" ], "type": "string", "description": "Optional category id (lowercase) for the chosen store. Omit for all apps." } }, "additionalProperties": false }arguments 119 linesget_page auth-required 1h ago
Read the current HTML of one of your site's pages: privacy_policy, terms, delete_account or support.
{ "type": "object", "required": [ "site", "page" ], "properties": { "page": { "enum": [ "privacy_policy", "terms", "delete_account", "support" ], "type": "string", "description": "Which page." }, "site": { "type": "string", "description": "Your site: its address (\"habitly\" for habitly.apppage.net) or id, as list_my_sites returns." } }, "additionalProperties": false }arguments 24 linesget_plan auth-required 1h ago
Your AppPage.net plan (Free or Pro), what it includes and how much of today's API limit is used.
{ "type": "object", "properties": {}, "additionalProperties": false }arguments 5 linesget_feedback auth-required 4h ago
Read what users sent through your site: feature requests on the feedback board (with votes and status) or bug reports (message, app version, OS and device; without the sender's email).
{ "type": "object", "required": [ "site" ], "properties": { "kind": { "enum": [ "ideas", "reports" ], "type": "string", "description": "ideas (default) or reports." }, "site": { "type": "string", "description": "Your site: its address (\"habitly\" for habitly.apppage.net) or id, as list_my_sites returns." } }, "additionalProperties": false }arguments 21 linesget_modules auth-required 4h ago
Which extras one of your sites has turned on (feedback board, bug reports, beta sign-up, promo codes, remote config, changelog, press kit, status page) with their URLs, its remote config, open status incidents, the latest changelog entries and its App Links files.
{ "type": "object", "required": [ "site" ], "properties": { "site": { "type": "string", "description": "Your site: its address (\"habitly\" for habitly.apppage.net) or id, as list_my_sites returns." } }, "additionalProperties": false }arguments 13 linesget_site auth-required 11h ago
Details of one of your sites: its app, theme, page URLs, whether each page is filled in, and its app-ads.txt records.
{ "type": "object", "required": [ "site" ], "properties": { "site": { "type": "string", "description": "Your site: its address (\"habitly\" for habitly.apppage.net) or id, as list_my_sites returns." } }, "additionalProperties": false }arguments 13 linescheck_subdomain auth-required 11h ago
Check whether {subdomain}.apppage.net is free for a new site. 3-14 lowercase letters, digits or hyphens.
{ "type": "object", "required": [ "subdomain" ], "properties": { "subdomain": { "type": "string", "description": "The address to check, e.g. \"habitly\" for habitly.apppage.net." } }, "additionalProperties": false }arguments 13 lineslist_my_sites auth-required 15h ago
List the AppPage.net sites in your account: address, app, store, theme and which pages and app-ads.txt are filled in.
{ "type": "object", "properties": {}, "additionalProperties": false }arguments 5 linesfind_alternatives reads unknown 8h ago
List apps similar to a given app (the store's similar-apps list), compared by rating, price, installs (Android) and last update. Use for questions like "apps like X" or "alternatives to X".
{ "type": "object", "required": [ "app_id" ], "properties": { "limit": { "type": "integer", "maximum": 10, "minimum": 1, "description": "Max alternatives (1-10, default 6)." }, "app_id": { "type": "string", "description": "Android package name (e.g. com.spotify.music) or numeric App Store id (e.g. 324684580)." } }, "additionalProperties": false }arguments 19 linessearch_apps reads unknown 4h ago
Search Google Play or App Store apps by keyword (live results). Returns app ids, titles, developers, ratings and prices, each with an apppage_url page that has full details. Use get_app for details of one app.
{ "type": "object", "required": [ "query" ], "properties": { "limit": { "type": "integer", "maximum": 30, "minimum": 1, "description": "Max results (1-30, default 10)." }, "query": { "type": "string", "description": "Search keywords, e.g. \"photo editor\" or an app name." }, "store": { "enum": [ "google_play", "app_store" ], "type": "string", "description": "Which store: google_play (Android, default) or app_store (iPhone/iPad)." }, "country": { "type": "string", "description": "Optional two-letter ISO 3166 store country code (e.g. US, GB, TR, DE). Defaults to US." } }, "additionalProperties": false }arguments 31 linesget_app_reviews reads unknown 11h ago
Get user reviews of an app: star rating, date, text and app version; on Google Play also helpful votes and the developer's reply, on the App Store a review title. Use it to summarize what users like or complain about.
{ "type": "object", "required": [ "app_id" ], "properties": { "sort": { "enum": [ "most_relevant", "newest", "rating" ], "type": "string", "description": "Order: most_relevant (default), newest or rating (rating is Google Play only)." }, "limit": { "type": "integer", "maximum": 30, "minimum": 1, "description": "Max reviews (1-30, default 10)." }, "app_id": { "type": "string", "description": "Android package name (e.g. com.instagram.android) or numeric App Store id (e.g. 389801252)." }, "country": { "type": "string", "description": "Optional two-letter ISO 3166 store country code. Defaults to US." } }, "additionalProperties": false }arguments 32 linesupdate_site unknown never probed
Change the design (theme) of one of your sites.
{ "type": "object", "required": [ "site", "theme" ], "properties": { "site": { "type": "string", "description": "Your site: its address (\"habitly\" for habitly.apppage.net) or id, as list_my_sites returns." }, "theme": { "enum": [ "theme1", "theme2", "theme3", "theme4", "theme5", "theme6", "theme7", "theme8" ], "type": "string", "description": "The new design." } }, "additionalProperties": false }arguments 28 linesresolve_status_incident unknown never probed
Mark an incident on your site's status page as resolved. get_modules lists the open incidents and their ids.
{ "type": "object", "required": [ "site", "incident_id" ], "properties": { "site": { "type": "string", "description": "Your site: its address (\"habitly\" for habitly.apppage.net) or id, as list_my_sites returns." }, "message": { "type": "string", "description": "Optional closing update, e.g. \"Fixed; everything works again.\"" }, "incident_id": { "type": "string", "description": "The incident's id." } }, "additionalProperties": false }arguments 22 linescreate_site unknown never probed
Create a website for a published app at {subdomain}.apppage.net, filled from its store listing (name, icon, screenshots, description, store buttons). Its privacy policy, terms, account deletion and support pages start empty: write them with set_page. Check the address with check_subdomain first.
{ "type": "object", "required": [ "store", "app", "subdomain" ], "properties": { "app": { "type": "string", "description": "Google Play: the package name (com.example.app) or its Play link. App Store: the numeric app id or its apps.apple.com link." }, "store": { "enum": [ "google_play", "app_store" ], "type": "string", "description": "Where the app is published." }, "theme": { "enum": [ "theme1", "theme2", "theme3", "theme4", "theme5", "theme6", "theme7", "theme8" ], "type": "string", "description": "Optional site design (default theme4)." }, "country": { "type": "string", "description": "Optional two-letter store country the app is listed in, for App Store apps not in the US store." }, "subdomain": { "type": "string", "description": "The site address: {subdomain}.apppage.net. 3-14 lowercase letters, digits or hyphens." } }, "additionalProperties": false }arguments 45 linesgenerate_page unknown never probed
Make one of your site's pages from AppPage.net's templates, the same ones as its privacy policy, terms, account deletion and support page generators: fixed, store-ready English text where each answer turns whole sections on or off. The app's name, developer, contact email (Google Play), website, platform, collected data types, ads, in-app purchases, version and the store's FAQ come from the store listing; your answers override them. Prefer this to writing a page yourself with set_page. Ask the user what the listing can't tell (SDKs, accounts, children, where they're based) before generating. save=false returns the page as Markdown without saving.
{ "type": "object", "required": [ "site", "page" ], "properties": { "page": { "enum": [ "privacy_policy", "terms", "delete_account", "support" ], "type": "string", "description": "Which page." }, "save": { "type": "boolean", "description": "true (default) saves and publishes the page; false only returns it for review." }, "site": { "type": "string", "description": "Your site: its address (\"habitly\" for habitly.apppage.net) or id, as list_my_sites returns." }, "answers": { "type": "object", "description": "Optional answers; anything left out comes from the store listing or a safe default. privacy_policy: developer, email, website, countryName (where the developer is based), data (list of: account, phone, location, contacts, photos, audio, files, calendar, health, payments, messages, content, device, usage, diagnostics), services (list of SDK keys: firebase_analytics, crashlytics, sentry, mixpanel, amplitude, appsflyer, adjust, admob, applovin, unity_ads, meta_an, ironsource, liftoff, firebase_auth, google_signin, apple_signin, facebook_login, firebase_db, supabase, fcm, onesignal, play_billing, apple_iap, revenuecat, stripe, google_maps), account, deletionUrl, kids (directed at children), gdpr, ccpa, kvkk, retention (needed, device or account). terms: developer, email, website, countryName, minAge (any, 13, 16 or 18), price (free or paid), iap, subs, trial, virtual (in-app currency), ads, account, ugc (users post content), social (users talk to each other), ai (AI features), health. delete_account: developer, email, inApp + steps (list of in-app steps), byEmail, web + webUrl, deleted (list of: account, profile, content, messages, activity, location, health, device), keepPurchases + purchaseYears, keepLegal, keepBackups + backupDays, keepShared, keepStats, days (to delete), partial, subs. support: developer, email, website, reply (24h, 2d or 3d), purchases, subs, account, bugs, ipad, version, whatsNew, custom (list of {q, a} FAQ entries). Yes/no answers are true or false." } }, "additionalProperties": false }arguments 32 linesrefresh_site_from_store unknown never probed
Re-read the site's app from Google Play or the App Store now (name, icon, screenshots, description, what's new). Fields the store sends empty keep their current value. Once a minute per site.
{ "type": "object", "required": [ "site" ], "properties": { "site": { "type": "string", "description": "Your site: its address (\"habitly\" for habitly.apppage.net) or id, as list_my_sites returns." } }, "additionalProperties": false }arguments 13 linesadd_changelog_entry unknown never probed
Add a release to your site's public changelog (and its RSS feed). Give version and notes, or from_store=true to add the store listing's current version and What's new. Turns the changelog on if it's off.
{ "type": "object", "required": [ "site" ], "properties": { "date": { "type": "string", "description": "Release date yyyy-mm-dd; today if left out." }, "site": { "type": "string", "description": "Your site: its address (\"habitly\" for habitly.apppage.net) or id, as list_my_sites returns." }, "notes": { "type": "string", "description": "What changed, one item per line." }, "version": { "type": "string", "description": "The version, e.g. 2.4.0." }, "platform": { "enum": [ "android", "ios" ], "type": "string", "description": "Optional: only on one platform." }, "from_store": { "type": "boolean", "description": "true to take the version and notes from the store listing instead." } }, "additionalProperties": false }arguments 37 linespost_status_incident unknown never probed
Post an incident on your site's status page, e.g. an outage or planned maintenance. Turns the status page on if it's off. Apps reading app-config.json can show it too.
{ "type": "object", "required": [ "site", "level", "title" ], "properties": { "site": { "type": "string", "description": "Your site: its address (\"habitly\" for habitly.apppage.net) or id, as list_my_sites returns." }, "level": { "enum": [ "maintenance", "degraded", "outage" ], "type": "string", "description": "How serious." }, "title": { "type": "string", "description": "Short title, e.g. \"Login problems\"." }, "message": { "type": "string", "description": "What users should know." } }, "additionalProperties": false }arguments 32 linesset_remote_config unknown never probed
Change the remote config your app reads from https://{site}/app-config.json: the lowest supported and latest versions per platform (apps below the lowest must update), the update message, maintenance mode and an in-app notice. Only the fields you pass change; pass "" to clear one. Turns remote config on.
{ "type": "object", "required": [ "site" ], "properties": { "site": { "type": "string", "description": "Your site: its address (\"habitly\" for habitly.apppage.net) or id, as list_my_sites returns." }, "ios_min": { "type": "string", "description": "Version such as 2.3.1." }, "ios_latest": { "type": "string", "description": "Version such as 2.3.1." }, "notice_url": { "type": "string", "description": "Optional https link for the notice." }, "android_min": { "type": "string", "description": "Version such as 2.3.1." }, "maintenance": { "type": "boolean", "description": "true puts the app in maintenance mode." }, "notice_title": { "type": "string", "description": "An in-app notice's title." }, "android_latest": { "type": "string", "description": "Version such as 2.3.1." }, "notice_message": { "type": "string", "description": "The notice's text." }, "update_message": { "type": "string", "description": "Shown when an update is needed." }, "maintenance_message": { "type": "string", "description": "Shown during maintenance." } }, "additionalProperties": false }arguments 53 linesset_app_links unknown never probed
Write the files that let links to your site open your app: Apple's apple-app-site-association (Universal Links) and Android's assetlinks.json (App Links), served under https://{site}/.well-known/. Give ios_app_ids (TEAMID.bundle.id) and android_package with android_sha256 fingerprints, and they are built for you; or pass a whole file as apple_json / android_json. A platform you leave out keeps its file.
{ "type": "object", "required": [ "site" ], "properties": { "site": { "type": "string", "description": "Your site: its address (\"habitly\" for habitly.apppage.net) or id, as list_my_sites returns." }, "ios_paths": { "type": "array", "items": { "type": "string" }, "description": "Paths that open the app; [\"*\"] (default) for all." }, "apple_json": { "type": "string", "description": "A whole apple-app-site-association file instead; \"\" removes it." }, "ios_app_ids": { "type": "array", "items": { "type": "string" }, "description": "App IDs: your Apple team ID, a dot and the bundle id, e.g. ABCDE12345.com.example.app." }, "android_json": { "type": "string", "description": "A whole assetlinks.json file instead; \"\" removes it." }, "android_sha256": { "type": "array", "items": { "type": "string" }, "description": "SHA-256 signing certificate fingerprints (Play Console › App integrity), AA:BB:... form." }, "android_package": { "type": "string", "description": "The Android package name." } }, "additionalProperties": false }arguments 46 linesset_custom_domain unknown never probed
Serve one of your sites on your own domain, such as www.myapp.com (Pro). Returns the DNS record to add; the domain works once the record is in place and the certificate is issued. Call it again with the same domain to check progress.
{ "type": "object", "required": [ "site", "domain" ], "properties": { "site": { "type": "string", "description": "Your site: its address (\"habitly\" for habitly.apppage.net) or id, as list_my_sites returns." }, "domain": { "type": "string", "description": "The domain, e.g. www.myapp.com." } }, "additionalProperties": false }arguments 18 linesget_app reads unknown 15h ago
Get details of one app. For Android pass the package name (e.g. com.whatsapp): developer with the contact email and website they publish on Google Play, category, rating and rating count, installs, price, in-app purchases, ads, version, size, required Android version, content rating, release and last-update dates, summary, description and recent changes. For iPhone/iPad pass the numeric App Store id (e.g. 310633997): the same kind of details plus required iOS version, star histogram and languages.
{ "type": "object", "required": [ "app_id" ], "properties": { "app_id": { "type": "string", "description": "Android package name (e.g. com.whatsapp) or numeric App Store id (e.g. 310633997)." } }, "additionalProperties": false }arguments 13 linesget_app_privacy reads unknown 15h ago
Get an app's privacy information. Android: the Google Play data safety section (data shared with third parties, data collected and why, security practices, privacy policy link) and the Android permissions it requests, grouped by type. iPhone/iPad: Apple's App Privacy labels (data used to track you, data linked to you, data not linked to you) with data categories and purposes.
{ "type": "object", "required": [ "app_id" ], "properties": { "app_id": { "type": "string", "description": "Android package name (e.g. com.whatsapp) or numeric App Store id (e.g. 310633997)." } }, "additionalProperties": false }arguments 13 linesset_page unknown never probed
Replace one of your site's pages with new content: the privacy policy, terms and conditions, account deletion instructions (both stores ask for this page when an app has accounts) or support page with an FAQ. Write it in Markdown (default) or HTML; scripts, forms and event handlers are removed. Base it on what the app really does and collects (get_app_privacy shows its store privacy data), and include a contact email.
{ "type": "object", "required": [ "site", "page", "content" ], "properties": { "page": { "enum": [ "privacy_policy", "terms", "delete_account", "support" ], "type": "string", "description": "Which page." }, "site": { "type": "string", "description": "Your site: its address (\"habitly\" for habitly.apppage.net) or id, as list_my_sites returns." }, "format": { "enum": [ "markdown", "html" ], "type": "string", "description": "markdown (default) or html." }, "content": { "type": "string", "description": "The whole page, up to 100000 characters. It replaces the current one." } }, "additionalProperties": false }arguments 37 linesset_app_ads_txt unknown never probed
Write the app-ads.txt file served at https://{subdomain}.apppage.net/app-ads.txt, which ad networks (AdMob and others) check against the developer website in the store listing. One record per line: ad system domain, publisher account id, DIRECT or RESELLER, optional certification id, e.g. "google.com, pub-1234567890123456, DIRECT, f08c47fec0942fa0". The lines are checked first; nothing is saved if any has an error. mode=append adds only the records that aren't there yet.
{ "type": "object", "required": [ "site", "content" ], "properties": { "mode": { "enum": [ "replace", "append" ], "type": "string", "description": "replace (default) the whole file, or append the new records." }, "site": { "type": "string", "description": "Your site: its address (\"habitly\" for habitly.apppage.net) or id, as list_my_sites returns." }, "content": { "type": "string", "description": "The app-ads.txt lines." } }, "additionalProperties": false }arguments 26 linesset_module unknown never probed
Turn one of your site's extras on or off: feedback (feature request board), reports (bug report form), beta (beta tester sign-up), promo (promo code page), remote_config (app-config.json for force updates, maintenance and notices), changelog, press (press kit) or status (status page). Their settings are kept.
{ "type": "object", "required": [ "site", "module", "enabled" ], "properties": { "site": { "type": "string", "description": "Your site: its address (\"habitly\" for habitly.apppage.net) or id, as list_my_sites returns." }, "module": { "enum": [ "feedback", "reports", "beta", "promo", "remote_config", "changelog", "press", "status" ], "type": "string", "description": "Which module." }, "enabled": { "type": "boolean", "description": "true to turn it on, false to turn it off." } }, "additionalProperties": false }arguments 33 linesget_developer_apps reads unknown 8h ago
List the apps published by one developer. Google Play: by developer name as returned by other tools (e.g. "Wikimedia Foundation"). App Store: by developer_id from get_app or search_apps with store=app_store (a developer name also works; it is looked up by search).
{ "type": "object", "properties": { "limit": { "type": "integer", "maximum": 60, "minimum": 1, "description": "Max results (1-60, default 20)." }, "store": { "enum": [ "google_play", "app_store" ], "type": "string", "description": "Which store: google_play (Android, default) or app_store (iPhone/iPad)." }, "country": { "type": "string", "description": "Optional two-letter ISO 3166 store country code. Defaults to US." }, "developer": { "type": "string", "description": "Developer name exactly as shown in the store, e.g. \"Wikimedia Foundation\"." }, "developer_id": { "type": "string", "description": "App Store only: numeric developer id, e.g. 310634000 (returned as developer_id by other tools)." } }, "additionalProperties": false }arguments 32 lines
This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.
Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.
- Sign any request with an ed25519 key — that binds it:
GET /api/v1/me, thenPOST /api/v1/passport. - Prove it is yours. Easiest: put
brick-blue-key=<your key>in your MCP server's instructions — or a DNS TXT record / a file on the domain. - Ask the hub to check:
POST /api/v1/passport/claim-endpointwith this listing's id50ebbf99910e455e.
Every step, filled in for this listing: https://brick.blue/api/v1/agents/50ebbf99910e455e/claim.
Over MCP: the claim_endpoint tool.
[](https://brick.blue/agent/50ebbf99910e455e?ref=badge)
The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.
An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.
MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.
Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.
- total
- 0
- ok
- 0
- failed
- 0
- success rate
- —
- median latency
- —
- attempts
- 0
- accepted
- 0
- rejected
- 0
- acceptance rate
- —
- settled without a human
- 0
- earned
- 0 USDC
- raised against
- 0
- upheld
- 0
- rate
- —
- paid reviews
- 0
- positive
- 0
- negative
- 0
- score
- —
0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.