Skip to main content
Glama
JiantaoFu

App Market Intelligence MCP

app-store-list

Retrieve curated App Store app listings from iTunes collections to analyze market trends, research competitors, and discover applications across categories and regions.

Instructions

Get apps from iTunes collections. Returns a list of apps with:

  • id: App Store ID number

  • appId: Bundle ID (e.g. 'com.company.app')

  • title: App name

  • icon: Icon image URL

  • url: App Store URL

  • price: Price in USD

  • currency: Price currency code

  • free: Boolean indicating if app is free

  • description: App description

  • developer: Developer name

  • developerUrl: Developer's App Store URL

  • developerId: Developer's ID

  • genre: App category name

  • genreId: Category ID

  • released: Release date (ISO string)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
collectionYesCollection to fetch from. Available collections: - newapplications: New iOS applications - newfreeapplications: New free iOS applications - newpaidapplications: New paid iOS applications - topfreeapplications: Top free iOS applications - topfreeipadapplications: Top free iPad applications - topgrossingapplications: Top grossing iOS applications - topgrossingipadapplications: Top grossing iPad applications - toppaidapplications: Top paid iOS applications - toppaidipadapplications: Top paid iPad applications
categoryNoCategory ID to filter by. Available categories: Main Categories: - 6000: BUSINESS - 6001: WEATHER - 6002: UTILITIES - 6003: TRAVEL - 6004: SPORTS - 6005: SOCIAL_NETWORKING - 6006: REFERENCE - 6007: PRODUCTIVITY - 6008: PHOTO_AND_VIDEO - 6009: NEWS - 6010: NAVIGATION - 6011: MUSIC - 6012: LIFESTYLE - 6013: HEALTH_AND_FITNESS - 6014: GAMES - 6015: FINANCE - 6016: ENTERTAINMENT - 6017: EDUCATION - 6018: BOOKS - 6020: MEDICAL - 6021: MAGAZINES_AND_NEWSPAPERS - 6022: CATALOGS - 6023: FOOD_AND_DRINK - 6024: SHOPPING Games Subcategories: - 7001: ACTION - 7002: ADVENTURE - 7003: ARCADE - 7004: BOARD - 7005: CARD - 7006: CASINO - 7007: DICE - 7008: EDUCATIONAL - 7009: FAMILY - 7011: MUSIC - 7012: PUZZLE - 7013: RACING - 7014: ROLE_PLAYING - 7015: SIMULATION - 7016: SPORTS - 7017: STRATEGY - 7018: TRIVIA - 7019: WORD Magazine Subcategories: - 13001: POLITICS - 13002: FASHION - 13003: HOME - 13004: OUTDOORS - 13005: SPORTS - 13006: AUTOMOTIVE - 13007: ARTS - 13008: WEDDINGS - 13009: BUSINESS - 13010: CHILDREN - 13011: COMPUTER - 13012: FOOD - 13013: CRAFTS - 13014: ELECTRONICS - 13015: ENTERTAINMENT - 13017: HEALTH - 13018: HISTORY - 13019: LITERARY - 13020: MEN - 13021: MOVIES_AND_MUSIC - 13023: FAMILY - 13024: PETS - 13025: PROFESSIONAL - 13026: REGIONAL - 13027: SCIENCE - 13028: TEENS - 13029: TRAVEL - 13030: WOMEN
langNoLanguage code for result text. If not provided, uses country-specific language.
fullDetailNoGet full app details including ratings, reviews etc (default: false)
countryNoCountry code (default: us)us
numNoNumber of results (default: 50, max: 200)

Implementation Reference

  • Handler function that invokes store.list from the external '@jeromyfu/app-store-scraper' library with provided parameters and returns the results as JSON in a content block.
    async ({ collection, category, country, num, lang, fullDetail }) => {
      const results = await store.list({ collection, category, country, num, lang, fullDetail });
      return { content: [{ type: "text", text: JSON.stringify(results) }] };
    }
  • Zod input schema defining parameters for the tool: collection (enum of App Store lists), optional category ID, lang, fullDetail, country (default 'us'), num (default 50, max 200).
    {
      collection: z.enum([
        'newapplications',
        'newfreeapplications',
        'newpaidapplications',
        'topfreeapplications',
        'topfreeipadapplications',
        'topgrossingapplications',
        'topgrossingipadapplications',
        'toppaidapplications',
        'toppaidipadapplications'
      ]).describe(
        "Collection to fetch from. Available collections:\n" +
        "- newapplications: New iOS applications\n" +
        "- newfreeapplications: New free iOS applications\n" +
        "- newpaidapplications: New paid iOS applications\n" +
        "- topfreeapplications: Top free iOS applications\n" +
        "- topfreeipadapplications: Top free iPad applications\n" +
        "- topgrossingapplications: Top grossing iOS applications\n" +
        "- topgrossingipadapplications: Top grossing iPad applications\n" +
        "- toppaidapplications: Top paid iOS applications\n" +
        "- toppaidipadapplications: Top paid iPad applications"
      ),
      category: z.number().optional().describe(
        "Category ID to filter by. Available categories:\n" +
        "Main Categories:\n" +
        "- 6000: BUSINESS\n" +
        "- 6001: WEATHER\n" +
        "- 6002: UTILITIES\n" +
        "- 6003: TRAVEL\n" +
        "- 6004: SPORTS\n" +
        "- 6005: SOCIAL_NETWORKING\n" +
        "- 6006: REFERENCE\n" +
        "- 6007: PRODUCTIVITY\n" +
        "- 6008: PHOTO_AND_VIDEO\n" +
        "- 6009: NEWS\n" +
        "- 6010: NAVIGATION\n" +
        "- 6011: MUSIC\n" +
        "- 6012: LIFESTYLE\n" +
        "- 6013: HEALTH_AND_FITNESS\n" +
        "- 6014: GAMES\n" +
        "- 6015: FINANCE\n" +
        "- 6016: ENTERTAINMENT\n" +
        "- 6017: EDUCATION\n" +
        "- 6018: BOOKS\n" +
        "- 6020: MEDICAL\n" +
        "- 6021: MAGAZINES_AND_NEWSPAPERS\n" +
        "- 6022: CATALOGS\n" +
        "- 6023: FOOD_AND_DRINK\n" +
        "- 6024: SHOPPING\n\n" +
        "Games Subcategories:\n" +
        "- 7001: ACTION\n" +
        "- 7002: ADVENTURE\n" +
        "- 7003: ARCADE\n" +
        "- 7004: BOARD\n" +
        "- 7005: CARD\n" +
        "- 7006: CASINO\n" +
        "- 7007: DICE\n" +
        "- 7008: EDUCATIONAL\n" +
        "- 7009: FAMILY\n" +
        "- 7011: MUSIC\n" +
        "- 7012: PUZZLE\n" +
        "- 7013: RACING\n" +
        "- 7014: ROLE_PLAYING\n" +
        "- 7015: SIMULATION\n" +
        "- 7016: SPORTS\n" +
        "- 7017: STRATEGY\n" +
        "- 7018: TRIVIA\n" +
        "- 7019: WORD\n\n" +
        "Magazine Subcategories:\n" +
        "- 13001: POLITICS\n" +
        "- 13002: FASHION\n" +
        "- 13003: HOME\n" +
        "- 13004: OUTDOORS\n" +
        "- 13005: SPORTS\n" +
        "- 13006: AUTOMOTIVE\n" +
        "- 13007: ARTS\n" +
        "- 13008: WEDDINGS\n" +
        "- 13009: BUSINESS\n" +
        "- 13010: CHILDREN\n" +
        "- 13011: COMPUTER\n" +
        "- 13012: FOOD\n" +
        "- 13013: CRAFTS\n" +
        "- 13014: ELECTRONICS\n" +
        "- 13015: ENTERTAINMENT\n" +
        "- 13017: HEALTH\n" +
        "- 13018: HISTORY\n" +
        "- 13019: LITERARY\n" +
        "- 13020: MEN\n" +
        "- 13021: MOVIES_AND_MUSIC\n" +
        "- 13023: FAMILY\n" +
        "- 13024: PETS\n" +
        "- 13025: PROFESSIONAL\n" +
        "- 13026: REGIONAL\n" +
        "- 13027: SCIENCE\n" +
        "- 13028: TEENS\n" +
        "- 13029: TRAVEL\n" +
        "- 13030: WOMEN"
      ),
      lang: z.string().optional().describe("Language code for result text. If not provided, uses country-specific language."),
      fullDetail: z.boolean().default(false).describe("Get full app details including ratings, reviews etc (default: false)"),
      country: z.string().default("us").describe("Country code (default: us)"),
      num: z.number().max(200).default(50).describe("Number of results (default: 50, max: 200)")
    }, 
  • src/server.js:271-396 (registration)
    Registration of the 'app-store-list' MCP tool using server.tool, providing description string, Zod schema, and inline async handler.
    server.tool("app-store-list", 
      "Get apps from iTunes collections. Returns a list of apps with:\n" +
      "- id: App Store ID number\n" +
      "- appId: Bundle ID (e.g. 'com.company.app')\n" +
      "- title: App name\n" +
      "- icon: Icon image URL\n" +
      "- url: App Store URL\n" +
      "- price: Price in USD\n" +
      "- currency: Price currency code\n" +
      "- free: Boolean indicating if app is free\n" +
      "- description: App description\n" +
      "- developer: Developer name\n" +
      "- developerUrl: Developer's App Store URL\n" +
      "- developerId: Developer's ID\n" +
      "- genre: App category name\n" +
      "- genreId: Category ID\n" +
      "- released: Release date (ISO string)",
      {
        collection: z.enum([
          'newapplications',
          'newfreeapplications',
          'newpaidapplications',
          'topfreeapplications',
          'topfreeipadapplications',
          'topgrossingapplications',
          'topgrossingipadapplications',
          'toppaidapplications',
          'toppaidipadapplications'
        ]).describe(
          "Collection to fetch from. Available collections:\n" +
          "- newapplications: New iOS applications\n" +
          "- newfreeapplications: New free iOS applications\n" +
          "- newpaidapplications: New paid iOS applications\n" +
          "- topfreeapplications: Top free iOS applications\n" +
          "- topfreeipadapplications: Top free iPad applications\n" +
          "- topgrossingapplications: Top grossing iOS applications\n" +
          "- topgrossingipadapplications: Top grossing iPad applications\n" +
          "- toppaidapplications: Top paid iOS applications\n" +
          "- toppaidipadapplications: Top paid iPad applications"
        ),
        category: z.number().optional().describe(
          "Category ID to filter by. Available categories:\n" +
          "Main Categories:\n" +
          "- 6000: BUSINESS\n" +
          "- 6001: WEATHER\n" +
          "- 6002: UTILITIES\n" +
          "- 6003: TRAVEL\n" +
          "- 6004: SPORTS\n" +
          "- 6005: SOCIAL_NETWORKING\n" +
          "- 6006: REFERENCE\n" +
          "- 6007: PRODUCTIVITY\n" +
          "- 6008: PHOTO_AND_VIDEO\n" +
          "- 6009: NEWS\n" +
          "- 6010: NAVIGATION\n" +
          "- 6011: MUSIC\n" +
          "- 6012: LIFESTYLE\n" +
          "- 6013: HEALTH_AND_FITNESS\n" +
          "- 6014: GAMES\n" +
          "- 6015: FINANCE\n" +
          "- 6016: ENTERTAINMENT\n" +
          "- 6017: EDUCATION\n" +
          "- 6018: BOOKS\n" +
          "- 6020: MEDICAL\n" +
          "- 6021: MAGAZINES_AND_NEWSPAPERS\n" +
          "- 6022: CATALOGS\n" +
          "- 6023: FOOD_AND_DRINK\n" +
          "- 6024: SHOPPING\n\n" +
          "Games Subcategories:\n" +
          "- 7001: ACTION\n" +
          "- 7002: ADVENTURE\n" +
          "- 7003: ARCADE\n" +
          "- 7004: BOARD\n" +
          "- 7005: CARD\n" +
          "- 7006: CASINO\n" +
          "- 7007: DICE\n" +
          "- 7008: EDUCATIONAL\n" +
          "- 7009: FAMILY\n" +
          "- 7011: MUSIC\n" +
          "- 7012: PUZZLE\n" +
          "- 7013: RACING\n" +
          "- 7014: ROLE_PLAYING\n" +
          "- 7015: SIMULATION\n" +
          "- 7016: SPORTS\n" +
          "- 7017: STRATEGY\n" +
          "- 7018: TRIVIA\n" +
          "- 7019: WORD\n\n" +
          "Magazine Subcategories:\n" +
          "- 13001: POLITICS\n" +
          "- 13002: FASHION\n" +
          "- 13003: HOME\n" +
          "- 13004: OUTDOORS\n" +
          "- 13005: SPORTS\n" +
          "- 13006: AUTOMOTIVE\n" +
          "- 13007: ARTS\n" +
          "- 13008: WEDDINGS\n" +
          "- 13009: BUSINESS\n" +
          "- 13010: CHILDREN\n" +
          "- 13011: COMPUTER\n" +
          "- 13012: FOOD\n" +
          "- 13013: CRAFTS\n" +
          "- 13014: ELECTRONICS\n" +
          "- 13015: ENTERTAINMENT\n" +
          "- 13017: HEALTH\n" +
          "- 13018: HISTORY\n" +
          "- 13019: LITERARY\n" +
          "- 13020: MEN\n" +
          "- 13021: MOVIES_AND_MUSIC\n" +
          "- 13023: FAMILY\n" +
          "- 13024: PETS\n" +
          "- 13025: PROFESSIONAL\n" +
          "- 13026: REGIONAL\n" +
          "- 13027: SCIENCE\n" +
          "- 13028: TEENS\n" +
          "- 13029: TRAVEL\n" +
          "- 13030: WOMEN"
        ),
        lang: z.string().optional().describe("Language code for result text. If not provided, uses country-specific language."),
        fullDetail: z.boolean().default(false).describe("Get full app details including ratings, reviews etc (default: false)"),
        country: z.string().default("us").describe("Country code (default: us)"),
        num: z.number().max(200).default(50).describe("Number of results (default: 50, max: 200)")
      }, 
      async ({ collection, category, country, num, lang, fullDetail }) => {
        const results = await store.list({ collection, category, country, num, lang, fullDetail });
        return { content: [{ type: "text", text: JSON.stringify(results) }] };
      }
    );

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/JiantaoFu/AppInsightMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server