{"openapi":"3.1.0","info":{"title":"OpenApps API","version":"1.0.0","summary":"What is listed, ranked, featured and launched in the AI app stores (ChatGPT, Claude, Cursor and Grok Bot), and the MCP servers they link to.","description":"Read-only and public. Every answer is { data, meta }; meta.basis says what each value is (observed, store_reported, derived, proxy). Links in rows point at https://theopenapps.com. x-openapps-cache: an answer stands until new data lands (data), an MCP server's tools change (data_or_tools) or the UTC day ends (day). Agents: https://theopenapps.com/v1/agent-context, MCP at https://theopenapps.com/mcp.","x-openapps-contract":"8d7a7c7e"},"servers":[{"url":"https://theopenapps.com"}],"security":[{},{"DeveloperKey":[]},{"OAuth":["catalog:read"]}],"tags":[{"name":"changes","description":"Typed events since a time: rank moves, chart and featuring entries and exits, launches, MCP toolset changes."},{"name":"movers","description":"What moved in a store's latest data: rank movers, featured-list entries and exits, metric changes."},{"name":"stores","description":"The tracked stores with their regions, charts and metrics."},{"name":"charts","description":"Store charts now or at a past time, with movement, and ChatGPT charts across countries."},{"name":"featuring","description":"The hand-picked sections of each store's home page."},{"name":"leaderboards","description":"Apps ranked by a store-reported metric such as installs."},{"name":"new","description":"New releases by launch date."},{"name":"listings","description":"Store listings (apps, connectors, plugins, rules): search, filters, ranks, metrics, MCP tools and versions."},{"name":"apps","description":"Apps: one offering across stores, its listings side by side."},{"name":"publishers","description":"Publishers, grouped by publisher key across stores: their listings, where those rank, and the apps they belong to."},{"name":"tags","description":"Tags: what an app does, what it works with and who it is for, read from its listing text, and capabilities read from its listing data."},{"name":"market","description":"Store sizes, launches per week and MCP ecosystem statistics."},{"name":"mcp","description":"The MCP servers store listings link to, and the tools each lists without a sign-in."},{"name":"scores","description":"OpenApps Rank: a 28-day aggregate of every chart that orders by popularity, per store and across stores, with tiers, momentum and its validation."},{"name":"passes","description":"A Pro pass, paid for by an AI client over MPP."}],"paths":{"/v1/changes":{"get":{"operationId":"changes_list","tags":["changes"],"summary":"A store's changes: ranks, featuring, launches, listings, releases, MCP tools and status, delistings, metrics.","description":"Up to 30 days. listing_change: dated field values; release_change: builds or reviewed commits; mcp_status_change: servers down, needing sign-in or back; delisted: needs complete current catalogs in every reachable region; metric_change: clears per-metric floors, never rank proxies.","parameters":[{"name":"store","in":"query","required":true,"description":"App store.","schema":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"example":"chatgpt"},{"name":"region","in":"query","required":false,"description":"ChatGPT country code (us, de…), global, or directory (Cursor). Default: main catalog.","schema":{"type":"string","pattern":"^([a-z]{2}|global|directory)$"}},{"name":"since","in":"query","required":false,"description":"Start of the window: ISO-8601, or relative to the latest data (-24h, -7d).","schema":{"default":"-24h","type":"string","maxLength":40},"example":"-7d"},{"name":"apps","in":"query","required":false,"description":"1 to 10 listing refs or OpenApps URLs.","schema":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"string","minLength":1,"maxLength":300}},"example":["cursor:406"],"style":"form","explode":false},{"name":"types","in":"query","required":false,"description":"Event types to keep. Default: all but release_change.","schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["rank_move","chart_enter","chart_exit","featuring_enter","featuring_exit","launch","toolset_change","listing_change","release_change","mcp_status_change","delisted","metric_change"]}},"example":["rank_move","chart_enter","toolset_change"],"style":"form","explode":false},{"name":"limit","in":"query","required":false,"description":"Rows per page.","schema":{"default":20,"type":"integer","minimum":1,"maximum":10000}},{"name":"cursor","in":"query","required":false,"description":"The previous page's meta.next_cursor.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"{ data, meta }: meta says when the data is from (as_of), how fresh it is, and the basis of each field.","headers":{"ETag":{"description":"Changes when the answer does; send it back in If-None-Match.","schema":{"type":"string"}},"Cache-Control":{"description":"Fresh until new data for the store is due.","schema":{"type":"string"}},"OpenApps-Contract":{"description":"Hash of the API contract that answered.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangesList"}}}},"304":{"$ref":"#/components/responses/304"},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"},"500":{"$ref":"#/components/responses/500"}},"x-fern-sdk-group-name":"changes","x-fern-sdk-method-name":"list","x-openapps-examples":[{"title":"ChatGPT US in the last day","path":"/v1/changes?store=chatgpt"},{"title":"Claude moves and toolset changes this week","path":"/v1/changes?store=claude&since=-7d&types=rank_move%2Cchart_enter%2Ctoolset_change"},{"title":"Claude listing and server status","path":"/v1/changes?store=claude&types=listing_change%2Cmcp_status_change%2Crelease_change"},{"title":"One Cursor app","path":"/v1/changes?store=cursor&apps=cursor%3A406&since=-7d"}],"x-openapps-basis":{"events[].type":"derived","events[].field":"observed","events[].t":"observed","events[].before":"observed","events[].after":"observed","counts":"derived","events[].best":"derived","events[].prev_t":"observed","events[].rank_impact":"derived"},"x-openapps-cache":"data_or_tools","x-openapps-mcp":[{"name":"changes_list","title":"What changed in a store","kind":"projection"}]}},"/v1/movers/{store}":{"get":{"operationId":"movers_list","tags":["movers"],"summary":"What moved in a store's latest data: rank movers in its lead charts, featured-list entries and exits, metric changes.","description":"Use for a store's headlines: who climbed, fell or entered its charts, joined or left a featured list, or changed installs or scores. By default every ranking chart, each product once where it moved most; chart: one chart, every mover. For a span of time, use changes_list.","parameters":[{"name":"store","in":"path","required":true,"description":"App store.","schema":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"example":"chatgpt"},{"name":"chart","in":"query","required":false,"description":"Chart name as stores lists it, e.g. category:productivity, popularity, directory:top.","schema":{"type":"string","minLength":1,"maxLength":120},"example":"popularity"},{"name":"window","in":"query","required":false,"description":"Movement against the previous day (1d) or a week earlier (7d).","schema":{"type":"string","enum":["1d","7d"]},"example":"7d"},{"name":"max_position","in":"query","required":false,"description":"Only rows at or above this position now (1-based).","schema":{"type":"integer","minimum":1,"maximum":10000},"example":50},{"name":"kinds","in":"query","required":false,"description":"App kinds, bare (connector) or store-qualified (claude:connector, chatgpt:apps_sdk); a value qualified by another store is ignored.","schema":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"string","enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted","chatgpt:apps_sdk","chatgpt:connector","chatgpt:plugin","chatgpt:curated","chatgpt:other","claude:connector","claude:plugin","claude:desktop_extension","cursor:plugin","cursor:directory_plugin","cursor:directory_mcp","grokbot:plugin","grokbot:bot","perplexity:connector","muse:connector","muse:unlisted"]}},"style":"form","explode":false}],"responses":{"200":{"description":"{ data, meta }: meta says when the data is from (as_of), how fresh it is, and the basis of each field.","headers":{"ETag":{"description":"Changes when the answer does; send it back in If-None-Match.","schema":{"type":"string"}},"Cache-Control":{"description":"Fresh until new data for the store is due.","schema":{"type":"string"}},"OpenApps-Contract":{"description":"Hash of the API contract that answered.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MoversList"}}}},"304":{"$ref":"#/components/responses/304"},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"},"500":{"$ref":"#/components/responses/500"}},"x-fern-sdk-group-name":"movers","x-fern-sdk-method-name":"list","x-openapps-examples":[{"title":"ChatGPT","path":"/v1/movers/chatgpt"},{"title":"Claude","path":"/v1/movers/claude"},{"title":"Cursor","path":"/v1/movers/cursor"},{"title":"Claude's Most popular over a week, top 50","path":"/v1/movers/claude?chart=popularity&window=7d&max_position=50"},{"title":"Every Claude ranking's top 100","path":"/v1/movers/claude?max_position=100"}],"x-openapps-basis":{"charts[].rows[].position":"observed","charts[].rows[].prev":"observed","charts[].rows[].is_new":"derived","featuring[].entered":"derived","metrics[].rows[].change":"derived","charts[].rows[].prev_week":"observed","charts[].rows[].linked":"derived","charts[].rows[].kind_position":"derived"},"x-openapps-cache":"data"}},"/v1/stores":{"get":{"operationId":"stores_get","tags":["stores"],"summary":"The app stores OpenApps tracks: listings per kind, regions, charts and metrics.","description":"Use for which stores, regions, charts and metrics exist and how fresh each region is. Chart names here are what charts_get takes.","parameters":[{"name":"store","in":"query","required":false,"description":"App store.","schema":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"example":"claude"}],"responses":{"200":{"description":"{ data, meta }: meta says when the data is from (as_of), how fresh it is, and the basis of each field.","headers":{"ETag":{"description":"Changes when the answer does; send it back in If-None-Match.","schema":{"type":"string"}},"Cache-Control":{"description":"Fresh until new data for the store is due.","schema":{"type":"string"}},"OpenApps-Contract":{"description":"Hash of the API contract that answered.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoresGet"}}}},"304":{"$ref":"#/components/responses/304"},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"},"500":{"$ref":"#/components/responses/500"}},"x-fern-sdk-group-name":"stores","x-fern-sdk-method-name":"get","x-openapps-examples":[{"title":"Every store","path":"/v1/stores"},{"title":"Claude only","path":"/v1/stores?store=claude"}],"x-openapps-basis":{"stores[].apps":"observed","stores[].regions[].last_run":"observed","stores[].charts[].size":"observed"},"x-openapps-cache":"data","x-openapps-mcp":[{"name":"stores_get","title":"Stores, regions and charts","kind":"projection"},{"name":"search","title":"Search OpenApps","kind":"composition"}]}},"/v1/charts/{store}/{chart}":{"get":{"operationId":"charts_get","tags":["charts"],"summary":"One store chart now or at a past time, with each app's previous position and its position a day earlier.","description":"Use for who ranks where in a store list and who moved, entered or dropped. Positions are 1-based. Not a history: one snapshot, compared with two earlier ones. kinds: only those kinds, ranked among themselves (positions, movement and total count them alone).","parameters":[{"name":"store","in":"path","required":true,"description":"App store.","schema":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"example":"claude"},{"name":"chart","in":"path","required":true,"description":"Chart name as stores lists it, e.g. category:productivity, popularity, directory:top.","schema":{"type":"string","minLength":1,"maxLength":120},"example":"popularity"},{"name":"region","in":"query","required":false,"description":"ChatGPT country code (us, de…), global, or directory (Cursor). Default: main catalog.","schema":{"type":"string","pattern":"^([a-z]{2}|global|directory)$"},"example":"us"},{"name":"at","in":"query","required":false,"description":"A past time (ISO-8601, -24h, -7d): the latest data at that time. Default: now.","schema":{"type":"string","maxLength":40},"example":"-24h"},{"name":"kinds","in":"query","required":false,"description":"App kinds, bare (connector) or store-qualified (claude:connector, chatgpt:apps_sdk); a value qualified by another store is ignored.","schema":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"string","enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted","chatgpt:apps_sdk","chatgpt:connector","chatgpt:plugin","chatgpt:curated","chatgpt:other","claude:connector","claude:plugin","claude:desktop_extension","cursor:plugin","cursor:directory_plugin","cursor:directory_mcp","grokbot:plugin","grokbot:bot","perplexity:connector","muse:connector","muse:unlisted"]}},"style":"form","explode":false},{"name":"limit","in":"query","required":false,"description":"Rows per page.","schema":{"default":20,"type":"integer","minimum":1,"maximum":10000}},{"name":"cursor","in":"query","required":false,"description":"The previous page's meta.next_cursor.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"{ data, meta }: meta says when the data is from (as_of), how fresh it is, and the basis of each field.","headers":{"ETag":{"description":"Changes when the answer does; send it back in If-None-Match.","schema":{"type":"string"}},"Cache-Control":{"description":"Fresh until new data for the store is due.","schema":{"type":"string"}},"OpenApps-Contract":{"description":"Hash of the API contract that answered.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChartsGet"}}}},"304":{"$ref":"#/components/responses/304"},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"},"500":{"$ref":"#/components/responses/500"}},"x-fern-sdk-group-name":"charts","x-fern-sdk-method-name":"get","x-openapps-examples":[{"title":"Claude's popularity chart now","path":"/v1/charts/claude/popularity"},{"title":"ChatGPT productivity in the US a day ago","path":"/v1/charts/chatgpt/category%3Aproductivity?region=us&at=-24h"},{"title":"ChatGPT productivity in Germany","path":"/v1/charts/chatgpt/category%3Aproductivity?region=de"}],"x-openapps-basis":{"rows[].position":"observed","rows[].prev":"observed","rows[].prev_day":"observed","rows[].is_new":"derived","rows[].launched_at":"derived","dropped":"derived","rows[].category":"observed","rows[].linked":"derived","rows[].first_seen_at":"observed","rows[].kind_position":"derived"},"x-openapps-cache":"data","x-openapps-mcp":[{"name":"charts_get","title":"Store chart with movement","kind":"projection"},{"name":"fetch","title":"Fetch an OpenApps result","kind":"composition"}]}},"/v1/charts/{store}/{chart}/regions":{"get":{"operationId":"charts_regions_get","tags":["charts"],"summary":"One ChatGPT chart in every country at once: the top apps of the US list with each app's position per country.","description":"Use to compare where a chart differs by country. ChatGPT only (the other stores are one worldwide catalog). Positions are 1-based; null means not in that country's list. Countries the store refuses are left out and named in meta.coverage.","parameters":[{"name":"store","in":"path","required":true,"description":"App store.","schema":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"example":"chatgpt"},{"name":"chart","in":"path","required":true,"description":"Chart name as stores lists it, e.g. category:productivity, popularity, directory:top.","schema":{"type":"string","minLength":1,"maxLength":120},"example":"category:productivity"},{"name":"limit","in":"query","required":false,"description":"Rows per page.","schema":{"default":20,"type":"integer","minimum":1,"maximum":10000}}],"responses":{"200":{"description":"{ data, meta }: meta says when the data is from (as_of), how fresh it is, and the basis of each field.","headers":{"ETag":{"description":"Changes when the answer does; send it back in If-None-Match.","schema":{"type":"string"}},"Cache-Control":{"description":"Fresh until new data for the store is due.","schema":{"type":"string"}},"OpenApps-Contract":{"description":"Hash of the API contract that answered.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChartsRegionsGet"}}}},"304":{"$ref":"#/components/responses/304"},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"},"500":{"$ref":"#/components/responses/500"}},"x-fern-sdk-group-name":"charts","x-fern-sdk-method-name":"regions_get","x-openapps-examples":[{"title":"ChatGPT productivity by country","path":"/v1/charts/chatgpt/category%3Aproductivity/regions"}],"x-openapps-basis":{"rows[].positions":"observed"},"x-openapps-cache":"data"}},"/v1/featuring/{store}":{"get":{"operationId":"featuring_get","tags":["featuring"],"summary":"Every section of a store's home page now, each with its apps and their recent movement.","description":"Use for what a store features on its home page. Positions are 1-based within each section. Claude's one section is its directory's Trending strip.","parameters":[{"name":"store","in":"path","required":true,"description":"App store.","schema":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"example":"chatgpt"},{"name":"region","in":"query","required":false,"description":"ChatGPT country code (us, de…), global, or directory (Cursor). Default: main catalog.","schema":{"type":"string","pattern":"^([a-z]{2}|global|directory)$"},"example":"de"}],"responses":{"200":{"description":"{ data, meta }: meta says when the data is from (as_of), how fresh it is, and the basis of each field.","headers":{"ETag":{"description":"Changes when the answer does; send it back in If-None-Match.","schema":{"type":"string"}},"Cache-Control":{"description":"Fresh until new data for the store is due.","schema":{"type":"string"}},"OpenApps-Contract":{"description":"Hash of the API contract that answered.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeaturingGet"}}}},"304":{"$ref":"#/components/responses/304"},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"},"500":{"$ref":"#/components/responses/500"}},"x-fern-sdk-group-name":"featuring","x-fern-sdk-method-name":"get","x-openapps-examples":[{"title":"ChatGPT's home page in the US","path":"/v1/featuring/chatgpt"},{"title":"ChatGPT in Germany","path":"/v1/featuring/chatgpt?region=de"},{"title":"Cursor","path":"/v1/featuring/cursor"}],"x-openapps-basis":{"sections[].rows[].position":"observed","sections[].rows[].prev":"observed","sections[].rows[].is_new":"derived"},"x-openapps-cache":"data"}},"/v1/featuring/{store}/history":{"get":{"operationId":"featuring_history","tags":["featuring"],"summary":"Featuring intervals per app or shelf, including apps that have left, over a bounded window.","description":"Filter app, shelf or country. Default 24h; max 30 days. baseline: on the shelf when the window starts; first_observed: its earliest entry on record, which may not be its first ever. left=null: no exit on record. A region without data cannot show an exit.","parameters":[{"name":"store","in":"path","required":true,"description":"App store.","schema":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"example":"chatgpt"},{"name":"app","in":"query","required":false,"description":"Listing ref '{store}:{plugin_id|slug}' (e.g. chatgpt:figma) or its OpenApps URL.","schema":{"type":"string","minLength":1,"maxLength":300},"example":"chatgpt:plugin_asdk_app_69c18c28f1188191bf5b8445c4ab0a2e"},{"name":"chart","in":"query","required":false,"description":"Chart name as stores lists it, e.g. category:productivity, popularity, directory:top.","schema":{"type":"string","minLength":1,"maxLength":120},"example":"home:featured"},{"name":"region","in":"query","required":false,"description":"ChatGPT country code (us, de…), global, or directory (Cursor). Default: main catalog.","schema":{"type":"string","pattern":"^([a-z]{2}|global|directory)$"},"example":"us"},{"name":"since","in":"query","required":false,"description":"Start of the window: ISO-8601, or relative to the latest data (-24h, -7d).","schema":{"default":"-24h","type":"string","maxLength":40}},{"name":"at","in":"query","required":false,"description":"A past time (ISO-8601, -24h, -7d): the latest data at that time. Default: now.","schema":{"type":"string","maxLength":40}},{"name":"limit","in":"query","required":false,"description":"Rows per page.","schema":{"default":20,"type":"integer","minimum":1,"maximum":10000}},{"name":"cursor","in":"query","required":false,"description":"The previous page's meta.next_cursor.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"{ data, meta }: meta says when the data is from (as_of), how fresh it is, and the basis of each field.","headers":{"ETag":{"description":"Changes when the answer does; send it back in If-None-Match.","schema":{"type":"string"}},"Cache-Control":{"description":"Fresh until new data for the store is due.","schema":{"type":"string"}},"OpenApps-Contract":{"description":"Hash of the API contract that answered.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeaturingHistory"}}}},"304":{"$ref":"#/components/responses/304"},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"},"500":{"$ref":"#/components/responses/500"}},"x-fern-sdk-group-name":"featuring","x-fern-sdk-method-name":"history","x-openapps-examples":[{"title":"ChatGPT featured shelf history","path":"/v1/featuring/chatgpt/history?chart=home%3Afeatured&region=us"},{"title":"One app's featuring history","path":"/v1/featuring/chatgpt/history?app=chatgpt%3Aplugin_asdk_app_69c18c28f1188191bf5b8445c4ab0a2e"},{"title":"Cursor featuring","path":"/v1/featuring/cursor/history"}],"x-openapps-basis":{"rows[].entered":"observed","rows[].left":"observed","rows[].observed_at":"observed","rows[].entered_before_window":"derived","rows[].days":"observed"},"x-openapps-cache":"data","x-openapps-mcp":[{"name":"featuring_history","title":"Featuring history","kind":"projection"}]}},"/v1/leaderboards/{store}/{metric}":{"get":{"operationId":"leaderboards_get","tags":["leaderboards"],"summary":"A store's apps ranked by one metric, labelled by its source basis, such as installs, with the value each replaced.","description":"Use for who leads on installs, popularity score or stars. The metrics a store ranks by are in the stores resource; ChatGPT publishes none. kinds: only apps of these kinds, ranked among themselves; a value qualified by another store is ignored.","parameters":[{"name":"store","in":"path","required":true,"description":"App store.","schema":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"example":"claude"},{"name":"metric","in":"path","required":true,"description":"Metric name as the stores resource lists it, e.g. installs (Claude), dir_installs (Cursor).","schema":{"type":"string","minLength":1,"maxLength":40},"example":"installs"},{"name":"kinds","in":"query","required":false,"description":"App kinds, bare (connector) or store-qualified (claude:connector, chatgpt:apps_sdk); a value qualified by another store is ignored.","schema":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"string","enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted","chatgpt:apps_sdk","chatgpt:connector","chatgpt:plugin","chatgpt:curated","chatgpt:other","claude:connector","claude:plugin","claude:desktop_extension","cursor:plugin","cursor:directory_plugin","cursor:directory_mcp","grokbot:plugin","grokbot:bot","perplexity:connector","muse:connector","muse:unlisted"]}},"style":"form","explode":false},{"name":"limit","in":"query","required":false,"description":"Rows per page.","schema":{"default":20,"type":"integer","minimum":1,"maximum":10000},"example":10},{"name":"cursor","in":"query","required":false,"description":"The previous page's meta.next_cursor.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"{ data, meta }: meta says when the data is from (as_of), how fresh it is, and the basis of each field.","headers":{"ETag":{"description":"Changes when the answer does; send it back in If-None-Match.","schema":{"type":"string"}},"Cache-Control":{"description":"Fresh until new data for the store is due.","schema":{"type":"string"}},"OpenApps-Contract":{"description":"Hash of the API contract that answered.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeaderboardsGet"}}}},"304":{"$ref":"#/components/responses/304"},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"},"500":{"$ref":"#/components/responses/500"}},"x-fern-sdk-group-name":"leaderboards","x-fern-sdk-method-name":"get","x-openapps-examples":[{"title":"Top 10 Claude plugins by installs","path":"/v1/leaderboards/claude/installs?limit=10"},{"title":"cursor.directory by installs","path":"/v1/leaderboards/cursor/dir_installs"}],"x-openapps-basis":{"rows[].position":"derived","rows[].value":"store_reported","rows[].prev":"store_reported"},"x-openapps-cache":"data","x-openapps-mcp":[{"name":"leaderboards_get","title":"Apps ranked by a metric","kind":"projection"}]}},"/v1/new":{"get":{"operationId":"new_list","tags":["new"],"summary":"A store's apps launched since a time, newest first, by launch date (on ChatGPT, when the app's ID was created).","description":"Use for new releases. A ChatGPT app goes live days after its ID is created: sort=first_seen_at orders by go-live day, as the site does. since reaches back at most 365 days. ChatGPT rows carry the app's category. kinds: only those kinds, counted among themselves (total and facets too).","parameters":[{"name":"store","in":"query","required":true,"description":"App store.","schema":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"example":"chatgpt"},{"name":"since","in":"query","required":false,"description":"Start of the window: ISO-8601, or relative to the latest data (-24h, -7d).","schema":{"default":"-24h","type":"string","maxLength":40},"example":"-7d"},{"name":"sort","in":"query","required":false,"description":"Newest first by this time; since bounds it.","schema":{"default":"released_at","type":"string","enum":["released_at","first_seen_at"]},"example":"first_seen_at"},{"name":"limit","in":"query","required":false,"description":"Rows per page.","schema":{"default":20,"type":"integer","minimum":1,"maximum":10000},"example":5},{"name":"cursor","in":"query","required":false,"description":"The previous page's meta.next_cursor.","schema":{"type":"string","maxLength":200}},{"name":"category","in":"query","required":false,"description":"Category title as rows show it, e.g. Productivity (new_list: ChatGPT only).","schema":{"type":"string","minLength":1,"maxLength":120}},{"name":"kind","in":"query","required":false,"description":"App kind; stores lists each store's kinds.","schema":{"type":"string","enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted"]}},{"name":"kinds","in":"query","required":false,"description":"App kinds, bare (connector) or store-qualified (claude:connector, chatgpt:apps_sdk); a value qualified by another store is ignored.","schema":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"string","enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted","chatgpt:apps_sdk","chatgpt:connector","chatgpt:plugin","chatgpt:curated","chatgpt:other","claude:connector","claude:plugin","claude:desktop_extension","cursor:plugin","cursor:directory_plugin","cursor:directory_mcp","grokbot:plugin","grokbot:bot","perplexity:connector","muse:connector","muse:unlisted"]}},"style":"form","explode":false}],"responses":{"200":{"description":"{ data, meta }: meta says when the data is from (as_of), how fresh it is, and the basis of each field.","headers":{"ETag":{"description":"Changes when the answer does; send it back in If-None-Match.","schema":{"type":"string"}},"Cache-Control":{"description":"Fresh until new data for the store is due.","schema":{"type":"string"}},"OpenApps-Contract":{"description":"Hash of the API contract that answered.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewList"}}}},"304":{"$ref":"#/components/responses/304"},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"},"500":{"$ref":"#/components/responses/500"}},"x-fern-sdk-group-name":"new","x-fern-sdk-method-name":"list","x-openapps-examples":[{"title":"ChatGPT this week","path":"/v1/new?store=chatgpt&since=-7d"},{"title":"Claude in the last day","path":"/v1/new?store=claude"},{"title":"ChatGPT apps that went live today","path":"/v1/new?store=chatgpt&sort=first_seen_at&limit=5"}],"x-openapps-basis":{"rows[].launched_at":"derived","rows[].first_seen_at":"observed","rows[].category":"observed","rows[].lag_days":"derived","rows[].linked":"derived","rows[].tags":"derived"},"x-openapps-cache":"data","x-openapps-mcp":[{"name":"new_list","title":"New releases in a store","kind":"projection"}]}},"/v1/listings":{"get":{"operationId":"listings_search","tags":["listings"],"summary":"Apps matching the query by name, publisher, brand, tag or what they do, one row per app, exact names first.","description":"Use to find an app's ref from its name, a brand it works with or what it does (\"send invoices\"). One row per app: its listing that best matches, with its other stores in linked. Ties go to OpenApps Rank.","parameters":[{"name":"query","in":"query","required":true,"description":"Words to find in app names, descriptions and publishers.","schema":{"type":"string","minLength":1,"maxLength":200},"example":"notion"},{"name":"publisher","in":"query","required":false,"description":"Only apps by this publisher, named in any form (Figma, Inc. or figma).","schema":{"type":"string","minLength":1,"maxLength":200},"example":"Linear"},{"name":"store","in":"query","required":false,"description":"App store.","schema":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"example":"cursor"},{"name":"kind","in":"query","required":false,"description":"App kind; stores lists each store's kinds.","schema":{"type":"string","enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted"]}},{"name":"limit","in":"query","required":false,"description":"Rows per page.","schema":{"default":20,"type":"integer","minimum":1,"maximum":10000}},{"name":"cursor","in":"query","required":false,"description":"The previous page's meta.next_cursor.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"{ data, meta }: meta says when the data is from (as_of), how fresh it is, and the basis of each field.","headers":{"ETag":{"description":"Changes when the answer does; send it back in If-None-Match.","schema":{"type":"string"}},"Cache-Control":{"description":"Fresh until new data for the store is due.","schema":{"type":"string"}},"OpenApps-Contract":{"description":"Hash of the API contract that answered.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListingsSearch"}}}},"304":{"$ref":"#/components/responses/304"},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"},"500":{"$ref":"#/components/responses/500"}},"x-fern-sdk-group-name":"listings","x-fern-sdk-method-name":"search","x-openapps-examples":[{"title":"Notion anywhere","path":"/v1/listings?query=notion"},{"title":"Context7 in Cursor","path":"/v1/listings?query=context7&store=cursor"},{"title":"Linear by its publisher","path":"/v1/listings?query=linear&publisher=Linear"}],"x-openapps-basis":{"rows[].name":"observed","rows[].publisher":"observed","rows[].best":"derived","rows[].category":"observed","rows[].tags":"derived","rows[].linked":"derived"},"x-openapps-cache":"data","x-openapps-mcp":[{"name":"listings_search","title":"Find apps by name, brand or job","kind":"projection"},{"name":"search","title":"Search OpenApps","kind":"composition"}]}},"/v1/listings/list":{"get":{"operationId":"listings_list","tags":["listings"],"summary":"Listings by store, kind, category, publisher, tags, MCP status, other stores and release; ranked, newest or A to Z.","description":"Use to browse the catalog by filters, e.g. Claude connectors tagged gmail. Each list filter keeps a listing with any of its values. tags: ids from tags_tree, match all or any; exclude leaves tags out. facets count each filter's values under the others. For a name, listings_search.","parameters":[{"name":"stores","in":"query","required":false,"description":"App stores.","schema":{"minItems":1,"maxItems":6,"type":"array","items":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]}},"example":["claude"],"style":"form","explode":false},{"name":"kinds","in":"query","required":false,"description":"App kinds, bare (connector) or store-qualified (claude:connector, chatgpt:apps_sdk); a value qualified by another store is ignored.","schema":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"string","enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted","chatgpt:apps_sdk","chatgpt:connector","chatgpt:plugin","chatgpt:curated","chatgpt:other","claude:connector","claude:plugin","claude:desktop_extension","cursor:plugin","cursor:directory_plugin","cursor:directory_mcp","grokbot:plugin","grokbot:bot","perplexity:connector","muse:connector","muse:unlisted"]}},"example":["connector"],"style":"form","explode":false},{"name":"families","in":"query","required":false,"description":"ChatGPT app families, e.g. plugin_asdk_app.","schema":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}},"style":"form","explode":false},{"name":"categories","in":"query","required":false,"description":"Category titles as rows show them.","schema":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":120}},"style":"form","explode":false},{"name":"publishers","in":"query","required":false,"description":"Publisher keys (publishers_list) or names.","schema":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"style":"form","explode":false},{"name":"tags","in":"query","required":false,"description":"Tag ids from tags_tree.","schema":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":60}},"example":["notion"],"style":"form","explode":false},{"name":"exclude","in":"query","required":false,"description":"Tag ids to leave out.","schema":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":60}},"style":"form","explode":false},{"name":"match","in":"query","required":false,"description":"all: every tag in tags; any: at least one.","schema":{"default":"all","type":"string","enum":["all","any"]}},{"name":"linked","in":"query","required":false,"description":"Other stores its app is in.","schema":{"minItems":1,"maxItems":6,"type":"array","items":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]}},"style":"form","explode":false},{"name":"statuses","in":"query","required":false,"description":"MCP server statuses: open, auth, blocked, dead or error.","schema":{"minItems":1,"maxItems":5,"type":"array","items":{"type":"string","enum":["open","auth","blocked","dead","error"]}},"style":"form","explode":false},{"name":"availability","in":"query","required":false,"description":"ChatGPT: all, listed in every country with data; missing, absent from some.","schema":{"type":"string","enum":["all","missing"]}},{"name":"released_since","in":"query","required":false,"description":"Only apps released since: ISO-8601, or relative to the latest data (-30d).","schema":{"type":"string","maxLength":40}},{"name":"query","in":"query","required":false,"description":"Words to find in app names, descriptions and publishers.","schema":{"type":"string","minLength":1,"maxLength":200}},{"name":"scope","in":"query","required":false,"description":"tags: browsing by tag.","schema":{"type":"string","enum":["tags"]}},{"name":"group","in":"query","required":false,"description":"app: one row per app, its best listing, by OpenApps Rank across stores; total and facets count apps.","schema":{"type":"string","enum":["app"]}},{"name":"sort_by","in":"query","required":false,"description":"rank: best chart place; new: newest release; name: A to Z.","schema":{"default":"rank","type":"string","enum":["rank","new","name"]},"example":"new"},{"name":"limit","in":"query","required":false,"description":"Rows per page.","schema":{"default":20,"type":"integer","minimum":1,"maximum":10000}},{"name":"cursor","in":"query","required":false,"description":"The previous page's meta.next_cursor.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"{ data, meta }: meta says when the data is from (as_of), how fresh it is, and the basis of each field.","headers":{"ETag":{"description":"Changes when the answer does; send it back in If-None-Match.","schema":{"type":"string"}},"Cache-Control":{"description":"Fresh until new data for the store is due.","schema":{"type":"string"}},"OpenApps-Contract":{"description":"Hash of the API contract that answered.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListingsList"}}}},"304":{"$ref":"#/components/responses/304"},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"},"500":{"$ref":"#/components/responses/500"}},"x-fern-sdk-group-name":"listings","x-fern-sdk-method-name":"list","x-openapps-examples":[{"title":"Every listing, best ranked first","path":"/v1/listings/list"},{"title":"Claude connectors that work with Notion","path":"/v1/listings/list?stores=claude&kinds=connector&tags=notion"},{"title":"Listings of apps on two or more stores, newest first","path":"/v1/listings/list?tags=multi-store&sort_by=new"}],"x-openapps-basis":{"rows[].best":"derived","rows[].prev_day":"derived","rows[].prev_week":"derived","rows[].countries":"derived","rows[].category":"observed","rows[].tags":"derived","rows[].linked":"derived","rows[].launched_at":"derived","rows[].first_seen_at":"observed","rows[].mcp_status":"observed","facets":"derived"},"x-openapps-cache":"data_or_tools"}},"/v1/listings/{store}/{plugin_id}":{"get":{"operationId":"listings_get","tags":["listings"],"summary":"One listing: name, kind, publisher, description, launch and go-live dates, and its app with the app's other listings.","description":"Use for what a listing is; part_of names its app, linked the app's listings in other stores. The ref may hold the slug. apps: up to 4 more listings to compare, with Pro. For ranks, metrics or tools, use listings_ranks_current, listings_metrics or listings_tools.","parameters":[{"name":"store","in":"path","required":true,"description":"App store.","schema":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"example":"claude"},{"name":"plugin_id","in":"path","required":true,"description":"The listing's id in its store, e.g. plugin_01abc; {store}:{plugin_id} is its ref.","schema":{"type":"string","minLength":1,"maxLength":280},"example":"plugin_01E5qTAcHfq3r1UJ8Zxgzjae"},{"name":"apps","in":"query","required":false,"description":"1 to 10 listing refs or OpenApps URLs.","schema":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"string","minLength":1,"maxLength":300}},"style":"form","explode":false}],"responses":{"200":{"description":"{ data, meta }: meta says when the data is from (as_of), how fresh it is, and the basis of each field.","headers":{"ETag":{"description":"Changes when the answer does; send it back in If-None-Match.","schema":{"type":"string"}},"Cache-Control":{"description":"Fresh until new data for the store is due.","schema":{"type":"string"}},"OpenApps-Contract":{"description":"Hash of the API contract that answered.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListingsGet"}}}},"304":{"$ref":"#/components/responses/304"},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"},"500":{"$ref":"#/components/responses/500"}},"x-fern-sdk-group-name":"listings","x-fern-sdk-method-name":"get","x-openapps-examples":[{"title":"A Claude connector","path":"/v1/listings/claude/plugin_01E5qTAcHfq3r1UJ8Zxgzjae"},{"title":"A listing whose app is in two stores","path":"/v1/listings/claude/plugin_017oWX9xDRL2TsTP3jVw6bEJ"},{"title":"A Claude connector by its slug","path":"/v1/listings/claude/notion"}],"x-openapps-basis":{"app.name":"observed","app.publisher":"observed","app.availability[].status":"derived","app.availability[].as_of":"observed","app.launched_at":"derived","app.first_seen_at":"observed","app.linked":"derived","app.tags":"derived"},"x-openapps-cache":"data","x-openapps-mcp":[{"name":"listings_profile","title":"Listing profiles","kind":"composition"},{"name":"fetch","title":"Fetch an OpenApps result","kind":"composition"}]}},"/v1/listings/{store}/{plugin_id}/ranks/current":{"get":{"operationId":"listings_ranks_current","tags":["listings"],"summary":"Every chart a listing is in now: best position and region, position in the main region, and how many regions list it.","description":"Use for where a listing ranks today. Positions are 1-based, each from its region's latest data (as_of). Countries the store refuses are left out and named in meta.coverage.","parameters":[{"name":"store","in":"path","required":true,"description":"App store.","schema":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"example":"chatgpt"},{"name":"plugin_id","in":"path","required":true,"description":"The listing's id in its store, e.g. plugin_01abc; {store}:{plugin_id} is its ref.","schema":{"type":"string","minLength":1,"maxLength":280},"example":"plugin_asdk_app_69c18c28f1188191bf5b8445c4ab0a2e"}],"responses":{"200":{"description":"{ data, meta }: meta says when the data is from (as_of), how fresh it is, and the basis of each field.","headers":{"ETag":{"description":"Changes when the answer does; send it back in If-None-Match.","schema":{"type":"string"}},"Cache-Control":{"description":"Fresh until new data for the store is due.","schema":{"type":"string"}},"OpenApps-Contract":{"description":"Hash of the API contract that answered.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListingsRanksCurrent"}}}},"304":{"$ref":"#/components/responses/304"},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"},"500":{"$ref":"#/components/responses/500"}},"x-fern-sdk-group-name":"listings","x-fern-sdk-method-name":"ranks_current","x-openapps-examples":[{"title":"Where a ChatGPT listing ranks","path":"/v1/listings/chatgpt/plugin_asdk_app_69c18c28f1188191bf5b8445c4ab0a2e/ranks/current"}],"x-openapps-basis":{"charts[].positions[].position":"observed","charts[].positions[].as_of":"observed","charts[].best":"derived","charts[].primary":"observed","charts[].regions":"derived","charts[].kind_position":"derived","charts[].prev_day":"derived","charts[].prev_week":"derived"},"x-openapps-cache":"data","x-openapps-mcp":[{"name":"listings_profile","title":"Listing profiles","kind":"composition"},{"name":"fetch","title":"Fetch an OpenApps result","kind":"composition"}]}},"/v1/listings/{store}/{plugin_id}/ranks":{"get":{"operationId":"listings_ranks_history","tags":["listings"],"summary":"Rank series of every chart a listing is in now: 14 days or from-to in the chart's home region, the latest elsewhere.","description":"Use for how positions moved. A point is a change (lists are stored on change); a series' last point is carried to its region's latest data, marked carried. apps adds up to 9 listings beside app; over 7 days back needs a key, more than one listing or over 30 days Pro.","parameters":[{"name":"store","in":"path","required":true,"description":"App store.","schema":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"example":"chatgpt"},{"name":"plugin_id","in":"path","required":true,"description":"The listing's id in its store, e.g. plugin_01abc; {store}:{plugin_id} is its ref.","schema":{"type":"string","minLength":1,"maxLength":280},"example":"plugin_asdk_app_69c18c28f1188191bf5b8445c4ab0a2e"},{"name":"apps","in":"query","required":false,"description":"1 to 10 listing refs or OpenApps URLs.","schema":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"string","minLength":1,"maxLength":300}},"example":["claude:plugin_017oWX9xDRL2TsTP3jVw6bEJ"],"style":"form","explode":false},{"name":"from","in":"query","required":false,"description":"Range start: ISO-8601, or relative to to (-30d).","schema":{"type":"string","maxLength":40},"example":"-7d"},{"name":"to","in":"query","required":false,"description":"Range end, a past time. Default: the latest data.","schema":{"type":"string","maxLength":40}}],"responses":{"200":{"description":"{ data, meta }: meta says when the data is from (as_of), how fresh it is, and the basis of each field.","headers":{"ETag":{"description":"Changes when the answer does; send it back in If-None-Match.","schema":{"type":"string"}},"Cache-Control":{"description":"Fresh until new data for the store is due.","schema":{"type":"string"}},"OpenApps-Contract":{"description":"Hash of the API contract that answered.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListingsRanksHistory"}}}},"304":{"$ref":"#/components/responses/304"},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"},"500":{"$ref":"#/components/responses/500"}},"x-fern-sdk-group-name":"listings","x-fern-sdk-method-name":"ranks_history","x-openapps-examples":[{"title":"A ChatGPT listing's ranks","path":"/v1/listings/chatgpt/plugin_asdk_app_69c18c28f1188191bf5b8445c4ab0a2e/ranks"},{"title":"Two Claude listings over a week","path":"/v1/listings/claude/plugin_01E5qTAcHfq3r1UJ8Zxgzjae/ranks?apps=claude%3Aplugin_017oWX9xDRL2TsTP3jVw6bEJ&from=-7d"}],"x-openapps-basis":{"series[].points[].position":"observed","series[].points[].kind_position":"derived","series[].points[].t":"observed","series[].points[].carried":"derived"},"x-openapps-cache":"data"}},"/v1/listings/{store}/{plugin_id}/metrics":{"get":{"operationId":"listings_metrics","tags":["listings"],"summary":"A listing's latest value of each metric its store publishes, with the value it replaced; each carries its basis.","description":"Use for installs, popularity scores and GitHub stars. Series change-only: t is when the value last changed.","parameters":[{"name":"store","in":"path","required":true,"description":"App store.","schema":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"example":"claude"},{"name":"plugin_id","in":"path","required":true,"description":"The listing's id in its store, e.g. plugin_01abc; {store}:{plugin_id} is its ref.","schema":{"type":"string","minLength":1,"maxLength":280},"example":"plugin_01E5qTAcHfq3r1UJ8Zxgzjae"}],"responses":{"200":{"description":"{ data, meta }: meta says when the data is from (as_of), how fresh it is, and the basis of each field.","headers":{"ETag":{"description":"Changes when the answer does; send it back in If-None-Match.","schema":{"type":"string"}},"Cache-Control":{"description":"Fresh until new data for the store is due.","schema":{"type":"string"}},"OpenApps-Contract":{"description":"Hash of the API contract that answered.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListingsMetrics"}}}},"304":{"$ref":"#/components/responses/304"},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"},"500":{"$ref":"#/components/responses/500"}},"x-fern-sdk-group-name":"listings","x-fern-sdk-method-name":"metrics","x-openapps-examples":[{"title":"Claude installs","path":"/v1/listings/claude/plugin_01E5qTAcHfq3r1UJ8Zxgzjae/metrics"}],"x-openapps-basis":{"metrics[].t":"observed","metrics[].prev":"observed"},"x-openapps-cache":"data","x-openapps-mcp":[{"name":"listings_profile","title":"Listing profiles","kind":"composition"},{"name":"fetch","title":"Fetch an OpenApps result","kind":"composition"}]}},"/v1/listings/{store}/{plugin_id}/tools":{"get":{"operationId":"listings_tools","tags":["listings"],"summary":"The MCP servers a listing links to, each with its latest tool list.","description":"Use for what a listing's MCP server exposes. Servers that need sign-in have status auth and no snapshot.","parameters":[{"name":"store","in":"path","required":true,"description":"App store.","schema":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"example":"claude"},{"name":"plugin_id","in":"path","required":true,"description":"The listing's id in its store, e.g. plugin_01abc; {store}:{plugin_id} is its ref.","schema":{"type":"string","minLength":1,"maxLength":280},"example":"plugin_017oWX9xDRL2TsTP3jVw6bEJ"}],"responses":{"200":{"description":"{ data, meta }: meta says when the data is from (as_of), how fresh it is, and the basis of each field.","headers":{"ETag":{"description":"Changes when the answer does; send it back in If-None-Match.","schema":{"type":"string"}},"Cache-Control":{"description":"Fresh until new data for the store is due.","schema":{"type":"string"}},"OpenApps-Contract":{"description":"Hash of the API contract that answered.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListingsTools"}}}},"304":{"$ref":"#/components/responses/304"},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"},"500":{"$ref":"#/components/responses/500"}},"x-fern-sdk-group-name":"listings","x-fern-sdk-method-name":"tools","x-openapps-examples":[{"title":"Context7's tools via Claude","path":"/v1/listings/claude/plugin_017oWX9xDRL2TsTP3jVw6bEJ/tools"}],"x-openapps-basis":{"servers[].status":"observed","servers[].snapshot.tools":"observed"},"x-openapps-cache":"data_or_tools","x-openapps-mcp":[{"name":"listings_profile","title":"Listing profiles","kind":"composition"},{"name":"fetch","title":"Fetch an OpenApps result","kind":"composition"}]}},"/v1/listings/{store}/{plugin_id}/widgets":{"get":{"operationId":"listings_widgets","tags":["listings"],"summary":"The widgets a ChatGPT listing's tools show, as images rendered with OpenApps' sample account.","description":"Use for what an app looks like inside ChatGPT. Each widget is one tool's current template, rendered in a browser with input and output a model wrote for a fictional OpenApps account, never a user's data. Images are 720 px wide (mobile 390 px); empty for listings without rendered widgets.","parameters":[{"name":"store","in":"path","required":true,"description":"App store.","schema":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"example":"chatgpt"},{"name":"plugin_id","in":"path","required":true,"description":"The listing's id in its store, e.g. plugin_01abc; {store}:{plugin_id} is its ref.","schema":{"type":"string","minLength":1,"maxLength":280},"example":"plugin_asdk_app_69c18c28f1188191bf5b8445c4ab0a2e"}],"responses":{"200":{"description":"{ data, meta }: meta says when the data is from (as_of), how fresh it is, and the basis of each field.","headers":{"ETag":{"description":"Changes when the answer does; send it back in If-None-Match.","schema":{"type":"string"}},"Cache-Control":{"description":"Fresh until new data for the store is due.","schema":{"type":"string"}},"OpenApps-Contract":{"description":"Hash of the API contract that answered.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListingsWidgets"}}}},"304":{"$ref":"#/components/responses/304"},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"},"500":{"$ref":"#/components/responses/500"}},"x-fern-sdk-group-name":"listings","x-fern-sdk-method-name":"widgets","x-openapps-examples":[{"title":"Alpha Docs's widgets","path":"/v1/listings/chatgpt/plugin_asdk_app_69c18c28f1188191bf5b8445c4ab0a2e/widgets"}],"x-openapps-basis":{"widgets[].tool":"observed","widgets[].template":"observed","widgets[].images":"derived"},"x-openapps-cache":"data"}},"/v1/listings/{store}/{plugin_id}/versions":{"get":{"operationId":"listings_versions","tags":["listings"],"summary":"Every version of a store listing and of its detail record, oldest first, each with its date.","description":"Use for when a listing changed and what it said. A version is recorded only when the store's record changes. Detail records are tracked for ChatGPT, Perplexity and Muse (their tool lists). Versions last seen over 7 days ago need a key, 30 days Pro; each record's latest shows.","parameters":[{"name":"store","in":"path","required":true,"description":"App store.","schema":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"example":"chatgpt"},{"name":"plugin_id","in":"path","required":true,"description":"The listing's id in its store, e.g. plugin_01abc; {store}:{plugin_id} is its ref.","schema":{"type":"string","minLength":1,"maxLength":280},"example":"plugin_asdk_app_69c18c28f1188191bf5b8445c4ab0a2e"}],"responses":{"200":{"description":"{ data, meta }: meta says when the data is from (as_of), how fresh it is, and the basis of each field.","headers":{"ETag":{"description":"Changes when the answer does; send it back in If-None-Match.","schema":{"type":"string"}},"Cache-Control":{"description":"Fresh until new data for the store is due.","schema":{"type":"string"}},"OpenApps-Contract":{"description":"Hash of the API contract that answered.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListingsVersions"}}}},"304":{"$ref":"#/components/responses/304"},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"},"500":{"$ref":"#/components/responses/500"}},"x-fern-sdk-group-name":"listings","x-fern-sdk-method-name":"versions","x-openapps-examples":[{"title":"A ChatGPT listing's versions","path":"/v1/listings/chatgpt/plugin_asdk_app_69c18c28f1188191bf5b8445c4ab0a2e/versions"}],"x-openapps-basis":{"listing[].data":"observed","detail[].data":"observed","listing[].seen_since":"observed"},"x-openapps-cache":"data"}},"/v1/apps/{slug}":{"get":{"operationId":"apps_get","tags":["apps"],"summary":"One app across stores: each of its listings' name, kind, publisher, category and best chart place now.","description":"Use for where one app is listed. slug is the app's (apps_list, publishers_get and listing rows' product give it), or a listing ref of one of its listings, which finds the app it is in now. match: how sure the binding between its listings is. tools: each tool or skill name across its listings.","parameters":[{"name":"slug","in":"path","required":true,"description":"An app's slug (e.g. context7), or one of its listings' refs.","schema":{"type":"string","minLength":1,"maxLength":300},"example":"context7"}],"responses":{"200":{"description":"{ data, meta }: meta says when the data is from (as_of), how fresh it is, and the basis of each field.","headers":{"ETag":{"description":"Changes when the answer does; send it back in If-None-Match.","schema":{"type":"string"}},"Cache-Control":{"description":"Fresh until new data for the store is due.","schema":{"type":"string"}},"OpenApps-Contract":{"description":"Hash of the API contract that answered.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppsGet"}}}},"304":{"$ref":"#/components/responses/304"},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"},"500":{"$ref":"#/components/responses/500"}},"x-fern-sdk-group-name":"apps","x-fern-sdk-method-name":"get","x-openapps-examples":[{"title":"Context7 by slug","path":"/v1/apps/context7"},{"title":"The app a listing is in","path":"/v1/apps/claude%3Anotion"}],"x-openapps-basis":{"name":"derived","slug":"derived","listings[].category":"observed","listings[].best":"derived","listings[].launched_at":"derived","listings[].first_seen_at":"observed","listings[].charts":"observed","listings[].countries":"observed","listings[].tools":"observed","listings[].changes":"observed","listings[].oa_rank":"derived","rank.score":"derived","rank.rank":"derived","rank.momentum":"derived","match.confidence":"derived","tools[].name":"derived"},"x-openapps-cache":"data","x-openapps-mcp":[{"name":"fetch","title":"Fetch an OpenApps result","kind":"composition"}]}},"/v1/apps":{"get":{"operationId":"apps_list","tags":["apps"],"summary":"Apps listed in more than one store or kind, by name: each one's slug and stores.","description":"Use to find an app's slug for apps_get. query: words in the app's name or slug; without it, the apps listed in most stores first.","parameters":[{"name":"query","in":"query","required":false,"description":"Words to find in app names, descriptions and publishers.","schema":{"type":"string","minLength":1,"maxLength":200},"example":"notion"},{"name":"limit","in":"query","required":false,"description":"Rows per page.","schema":{"default":20,"type":"integer","minimum":1,"maximum":10000}}],"responses":{"200":{"description":"{ data, meta }: meta says when the data is from (as_of), how fresh it is, and the basis of each field.","headers":{"ETag":{"description":"Changes when the answer does; send it back in If-None-Match.","schema":{"type":"string"}},"Cache-Control":{"description":"Fresh until new data for the store is due.","schema":{"type":"string"}},"OpenApps-Contract":{"description":"Hash of the API contract that answered.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppsList"}}}},"304":{"$ref":"#/components/responses/304"},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"},"500":{"$ref":"#/components/responses/500"}},"x-fern-sdk-group-name":"apps","x-fern-sdk-method-name":"list","x-openapps-examples":[{"title":"Apps named like Notion","path":"/v1/apps?query=notion"}],"x-openapps-basis":{"rows[].name":"derived","rows[].stores":"observed"},"x-openapps-cache":"data"}},"/v1/publishers":{"get":{"operationId":"publishers_list","tags":["publishers"],"summary":"Publishers across stores, one per publisher key: apps per store, and their app with the best chart place now.","description":"Use to rank developers by how many apps they list or by their best chart position. With store, only publishers with apps there, counted, ranked and pictured by those apps; stores still lists every store. summary: the selection's figures, and how many apps name a publisher.","parameters":[{"name":"store","in":"query","required":false,"description":"App store.","schema":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"example":"claude"},{"name":"publisher","in":"query","required":false,"description":"Only apps by this publisher, named in any form (Figma, Inc. or figma).","schema":{"type":"string","minLength":1,"maxLength":200}},{"name":"order","in":"query","required":false,"description":"apps: most apps first; rank: best chart position first.","schema":{"default":"apps","type":"string","enum":["apps","rank"]},"example":"rank"},{"name":"limit","in":"query","required":false,"description":"Rows per page.","schema":{"default":20,"type":"integer","minimum":1,"maximum":10000}},{"name":"cursor","in":"query","required":false,"description":"The previous page's meta.next_cursor.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"{ data, meta }: meta says when the data is from (as_of), how fresh it is, and the basis of each field.","headers":{"ETag":{"description":"Changes when the answer does; send it back in If-None-Match.","schema":{"type":"string"}},"Cache-Control":{"description":"Fresh until new data for the store is due.","schema":{"type":"string"}},"OpenApps-Contract":{"description":"Hash of the API contract that answered.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishersList"}}}},"304":{"$ref":"#/components/responses/304"},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"},"500":{"$ref":"#/components/responses/500"}},"x-fern-sdk-group-name":"publishers","x-fern-sdk-method-name":"list","x-openapps-examples":[{"title":"Publishers with the most apps","path":"/v1/publishers"},{"title":"Claude publishers by best rank","path":"/v1/publishers?store=claude&order=rank"}],"x-openapps-basis":{"rows[].name":"derived","rows[].stores":"observed","rows[].apps":"observed","rows[].best":"derived","rows[].top":"derived","rows[].tags":"derived","summary.on_both":"derived","summary.chatgpt_with_developer_pct":"derived","summary.claude_with_publisher_pct":"derived"},"x-openapps-cache":"data"}},"/v1/publishers/{key}":{"get":{"operationId":"publishers_get","tags":["publishers"],"summary":"One publisher's listings in every store, each with its category and best chart place now, and the apps they belong to.","description":"Use for everything one developer lists. key is the publisher key from publishers_list, or any name the publisher lists under (Figma, Inc. or figma); another legal name has its own key. identities: the websites and MCP hosts its listings name, the values with OpenApps Pro, the count with every plan.","parameters":[{"name":"key","in":"path","required":true,"description":"Publisher key from publishers_list (e.g. figma), or a name it lists under (Figma, Inc.).","schema":{"type":"string","minLength":1,"maxLength":200},"example":"context7"}],"responses":{"200":{"description":"{ data, meta }: meta says when the data is from (as_of), how fresh it is, and the basis of each field.","headers":{"ETag":{"description":"Changes when the answer does; send it back in If-None-Match.","schema":{"type":"string"}},"Cache-Control":{"description":"Fresh until new data for the store is due.","schema":{"type":"string"}},"OpenApps-Contract":{"description":"Hash of the API contract that answered.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishersGet"}}}},"304":{"$ref":"#/components/responses/304"},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"},"500":{"$ref":"#/components/responses/500"}},"x-fern-sdk-group-name":"publishers","x-fern-sdk-method-name":"get","x-openapps-examples":[{"title":"A publisher by key","path":"/v1/publishers/context7"},{"title":"A publisher by name","path":"/v1/publishers/Upstash"}],"x-openapps-basis":{"publisher.name":"derived","publisher.best":"derived","apps[].best":"derived","apps[].category":"observed","apps[].launched_at":"derived","apps[].first_seen_at":"observed","apps[].prev_day":"observed","apps[].prev_week":"observed","products[].listings":"derived","countries.listed":"observed","shelves.n":"observed","with_mcp.n":"observed","identities.n":"observed","others_on_both[].listings":"observed"},"x-openapps-cache":"data"}},"/v1/tags":{"get":{"operationId":"tags_tree","tags":["tags"],"summary":"Every tag with its facet, parent and app count per store.","description":"Use to find tag ids for listings_list and tags_get. A tag counts every app with a narrower tag too. Use-case (job), works and for tags are per app, cap tags per listing. kinds: count only these kinds, as listings_list filters them.","parameters":[{"name":"store","in":"query","required":false,"description":"App store.","schema":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]}},{"name":"kinds","in":"query","required":false,"description":"App kinds, bare (connector) or store-qualified (claude:connector, chatgpt:apps_sdk); a value qualified by another store is ignored.","schema":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"string","enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted","chatgpt:apps_sdk","chatgpt:connector","chatgpt:plugin","chatgpt:curated","chatgpt:other","claude:connector","claude:plugin","claude:desktop_extension","cursor:plugin","cursor:directory_plugin","cursor:directory_mcp","grokbot:plugin","grokbot:bot","perplexity:connector","muse:connector","muse:unlisted"]}},"style":"form","explode":false}],"responses":{"200":{"description":"{ data, meta }: meta says when the data is from (as_of), how fresh it is, and the basis of each field.","headers":{"ETag":{"description":"Changes when the answer does; send it back in If-None-Match.","schema":{"type":"string"}},"Cache-Control":{"description":"Fresh until new data for the store is due.","schema":{"type":"string"}},"OpenApps-Contract":{"description":"Hash of the API contract that answered.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagsTree"}}}},"304":{"$ref":"#/components/responses/304"},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"},"500":{"$ref":"#/components/responses/500"}},"x-fern-sdk-group-name":"tags","x-fern-sdk-method-name":"tree","x-openapps-examples":[{"title":"Every tag","path":"/v1/tags"}],"x-openapps-basis":{"tags[].n":"derived","tags[].stores":"derived","facets[].apps":"derived","stores[].apps":"observed"},"x-openapps-cache":"data_or_tools"}},"/v1/tags/{tag}":{"get":{"operationId":"tags_get","tags":["tags"],"summary":"One tag: path, narrower tags, counts, top apps per store, related tags.","description":"Use for one tag's apps and neighbours. Old ids answer their successor, else gone. top: per store, best chart place first, limit each. related: tags its apps carry more often than apps at large. kinds: count and list these kinds only.","parameters":[{"name":"tag","in":"path","required":true,"description":"Tag id from tags_tree, e.g. gmail.","schema":{"type":"string","minLength":1,"maxLength":60},"example":"notion"},{"name":"store","in":"query","required":false,"description":"App store.","schema":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"example":"claude"},{"name":"kinds","in":"query","required":false,"description":"App kinds, bare (connector) or store-qualified (claude:connector, chatgpt:apps_sdk); a value qualified by another store is ignored.","schema":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"string","enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted","chatgpt:apps_sdk","chatgpt:connector","chatgpt:plugin","chatgpt:curated","chatgpt:other","claude:connector","claude:plugin","claude:desktop_extension","cursor:plugin","cursor:directory_plugin","cursor:directory_mcp","grokbot:plugin","grokbot:bot","perplexity:connector","muse:connector","muse:unlisted"]}},"style":"form","explode":false},{"name":"limit","in":"query","required":false,"description":"Rows per page.","schema":{"default":20,"type":"integer","minimum":1,"maximum":10000},"example":5}],"responses":{"200":{"description":"{ data, meta }: meta says when the data is from (as_of), how fresh it is, and the basis of each field.","headers":{"ETag":{"description":"Changes when the answer does; send it back in If-None-Match.","schema":{"type":"string"}},"Cache-Control":{"description":"Fresh until new data for the store is due.","schema":{"type":"string"}},"OpenApps-Contract":{"description":"Hash of the API contract that answered.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagsGet"}}}},"304":{"$ref":"#/components/responses/304"},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"},"500":{"$ref":"#/components/responses/500"}},"x-fern-sdk-group-name":"tags","x-fern-sdk-method-name":"get","x-openapps-examples":[{"title":"Apps that work with Notion","path":"/v1/tags/notion"},{"title":"Developer tools in Claude","path":"/v1/tags/developer-tools?store=claude&limit=5"}],"x-openapps-basis":{"tag.n":"derived","top[].best":"derived","top[].tags":"derived","top[].category":"observed","top[].linked":"derived","top[].prev_day":"observed","top[].prev_week":"observed","kpis.new_30d":"derived","kpis.with_mcp.n":"derived","kpis.on_both":"derived","weeks[].n":"derived","children[].n":"derived","siblings[].n":"derived","related[].n":"derived","related[].lift":"derived"},"x-openapps-cache":"data_or_tools","x-openapps-mcp":[{"name":"search","title":"Search OpenApps","kind":"composition"},{"name":"fetch","title":"Fetch an OpenApps result","kind":"composition"}]}},"/v1/market":{"get":{"operationId":"market_get","tags":["market"],"summary":"Each store's size and shape: apps per kind, weekly launches over a year, list sizes, and open MCP toolset statistics.","description":"Use for market-level questions: how big a store is, how fast it grows, how MCP servers are built. Not per app; use listings_profile.","parameters":[{"name":"store","in":"query","required":false,"description":"App store.","schema":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"example":"cursor"}],"responses":{"200":{"description":"{ data, meta }: meta says when the data is from (as_of), how fresh it is, and the basis of each field.","headers":{"ETag":{"description":"Changes when the answer does; send it back in If-None-Match.","schema":{"type":"string"}},"Cache-Control":{"description":"Fresh until new data for the store is due.","schema":{"type":"string"}},"OpenApps-Contract":{"description":"Hash of the API contract that answered.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketGet"}}}},"304":{"$ref":"#/components/responses/304"},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"},"500":{"$ref":"#/components/responses/500"}},"x-fern-sdk-group-name":"market","x-fern-sdk-method-name":"get","x-openapps-examples":[{"title":"Every store","path":"/v1/market"},{"title":"Cursor","path":"/v1/market?store=cursor"}],"x-openapps-basis":{"stores[].apps":"observed","stores[].launches.weeks[].n":"derived","stores[].launches.weekdays[].n":"derived","stores[].top10":"derived","mcp.by_status":"observed","mcp.cross_store":"derived","mcp.open":"observed","facts":"derived"},"x-openapps-cache":"day","x-openapps-mcp":[{"name":"market_get","title":"Store and MCP ecosystem statistics","kind":"projection"}]}},"/v1/mcp/toolsets":{"get":{"operationId":"mcp_toolset_get","tags":["mcp"],"summary":"An MCP server's tools at a time, or what changed between two of its toolset versions: tools added, removed and changed.","description":"Use for an app's or a server's toolset now, at a past time, or against an earlier version. Reads OpenApps' stored toolsets, the tools each server lists without a sign-in; it never calls the server.","parameters":[{"name":"app","in":"query","required":false,"description":"Listing ref '{store}:{plugin_id|slug}' (e.g. chatgpt:figma) or its OpenApps URL.","schema":{"type":"string","minLength":1,"maxLength":300},"example":"claude:plugin_017oWX9xDRL2TsTP3jVw6bEJ"},{"name":"server","in":"query","required":false,"description":"MCP server URL as a listing's tools list it, or its OpenApps id.","schema":{"type":"string","minLength":1,"maxLength":500},"example":"https://mcp.context7.com/mcp"},{"name":"at","in":"query","required":false,"description":"A past time (ISO-8601, -24h, -7d): the latest data at that time. Default: now.","schema":{"type":"string","maxLength":40},"example":"2099-01-01T12:00:00Z"},{"name":"diff_from","in":"query","required":false,"description":"An earlier toolset to diff against: snapshot hash or time (ISO-8601, -7d).","schema":{"type":"string","minLength":1,"maxLength":80},"example":"-7d"}],"responses":{"200":{"description":"{ data, meta }: meta says when the data is from (as_of), how fresh it is, and the basis of each field.","headers":{"ETag":{"description":"Changes when the answer does; send it back in If-None-Match.","schema":{"type":"string"}},"Cache-Control":{"description":"Fresh until new data for the store is due.","schema":{"type":"string"}},"OpenApps-Contract":{"description":"Hash of the API contract that answered.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpToolsetGet"}}}},"304":{"$ref":"#/components/responses/304"},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"},"500":{"$ref":"#/components/responses/500"}},"x-fern-sdk-group-name":"mcp","x-fern-sdk-method-name":"toolset_get","x-openapps-examples":[{"title":"Context7's server now","path":"/v1/mcp/toolsets?server=https%3A%2F%2Fmcp.context7.com%2Fmcp"},{"title":"What changed in Context7's tools this week","path":"/v1/mcp/toolsets?app=claude%3Aplugin_017oWX9xDRL2TsTP3jVw6bEJ&diff_from=-7d"},{"title":"Context7's tools on 1 January 2099","path":"/v1/mcp/toolsets?server=https%3A%2F%2Fmcp.context7.com%2Fmcp&at=2099-01-01T12%3A00%3A00Z"}],"x-openapps-basis":{"servers[].status":"observed","servers[].snapshot.tools":"observed","servers[].diff":"derived","servers[].apps":"observed"},"x-openapps-cache":"data_or_tools","x-openapps-mcp":[{"name":"mcp_toolset_get","title":"MCP server toolset and changes","kind":"projection"},{"name":"search","title":"Search OpenApps","kind":"composition"},{"name":"fetch","title":"Fetch an OpenApps result","kind":"composition"}]}},"/v1/mcp/servers":{"get":{"operationId":"mcp_servers_list","tags":["mcp"],"summary":"The remote MCP servers that store listings link to, open ones first, with tool counts and the apps that link each.","description":"Use to browse or count MCP servers by status or store. For one server's tools, use mcp_servers_get or mcp_toolset_get.","parameters":[{"name":"status","in":"query","required":false,"description":"MCP server status: open (lists its tools without a sign-in), auth, blocked, dead or error.","schema":{"type":"string","enum":["open","auth","blocked","dead","error"]},"example":"open"},{"name":"store","in":"query","required":false,"description":"App store.","schema":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"example":"claude"},{"name":"limit","in":"query","required":false,"description":"Rows per page.","schema":{"default":20,"type":"integer","minimum":1,"maximum":10000}},{"name":"cursor","in":"query","required":false,"description":"The previous page's meta.next_cursor.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"{ data, meta }: meta says when the data is from (as_of), how fresh it is, and the basis of each field.","headers":{"ETag":{"description":"Changes when the answer does; send it back in If-None-Match.","schema":{"type":"string"}},"Cache-Control":{"description":"Fresh until new data for the store is due.","schema":{"type":"string"}},"OpenApps-Contract":{"description":"Hash of the API contract that answered.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServersList"}}}},"304":{"$ref":"#/components/responses/304"},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"},"500":{"$ref":"#/components/responses/500"}},"x-fern-sdk-group-name":"mcp","x-fern-sdk-method-name":"servers_list","x-openapps-examples":[{"title":"Open servers","path":"/v1/mcp/servers?status=open"},{"title":"Servers Claude links to","path":"/v1/mcp/servers?store=claude"}],"x-openapps-basis":{"rows[].status":"observed","rows[].tool_count":"observed","rows[].stores":"observed"},"x-openapps-cache":"data_or_tools"}},"/v1/mcp/servers/{server}":{"get":{"operationId":"mcp_servers_get","tags":["mcp"],"summary":"One MCP server: its status, the apps that link to it, its latest toolset with every tool, and its toolset history.","description":"Use for everything about one server by id or URL. For its tools at a past time or a diff between versions, use mcp_toolset_get.","parameters":[{"name":"server","in":"path","required":true,"description":"MCP server URL as a listing's tools list it, or its OpenApps id.","schema":{"type":"string","minLength":1,"maxLength":500},"example":"https://mcp.context7.com/mcp"}],"responses":{"200":{"description":"{ data, meta }: meta says when the data is from (as_of), how fresh it is, and the basis of each field.","headers":{"ETag":{"description":"Changes when the answer does; send it back in If-None-Match.","schema":{"type":"string"}},"Cache-Control":{"description":"Fresh until new data for the store is due.","schema":{"type":"string"}},"OpenApps-Contract":{"description":"Hash of the API contract that answered.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServersGet"}}}},"304":{"$ref":"#/components/responses/304"},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"},"500":{"$ref":"#/components/responses/500"}},"x-fern-sdk-group-name":"mcp","x-fern-sdk-method-name":"servers_get","x-openapps-examples":[{"title":"Context7's server","path":"/v1/mcp/servers/https%3A%2F%2Fmcp.context7.com%2Fmcp"}],"x-openapps-basis":{"server.status":"observed","toolset.tools":"observed","apps":"observed"},"x-openapps-cache":"data_or_tools"}},"/v1/scores/apps":{"get":{"operationId":"scores_apps","tags":["scores"],"summary":"Apps across every store by OpenApps Rank: the sum over stores of 1/rank of each app's best listing there.","description":"Use for who is popular across stores, not in one. By oa_app@2 (scores_methods). kinds keeps only listings of those kinds and ranks each store's kept listings among themselves; without it, every charted listing counts, Cursor's rules included.","parameters":[{"name":"kinds","in":"query","required":false,"description":"App kinds, bare (connector) or store-qualified (claude:connector, chatgpt:apps_sdk); a value qualified by another store is ignored.","schema":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"string","enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted","chatgpt:apps_sdk","chatgpt:connector","chatgpt:plugin","chatgpt:curated","chatgpt:other","claude:connector","claude:plugin","claude:desktop_extension","cursor:plugin","cursor:directory_plugin","cursor:directory_mcp","grokbot:plugin","grokbot:bot","perplexity:connector","muse:connector","muse:unlisted"]}},"example":["app","claude:connector","cursor:plugin","cursor:directory_mcp","grokbot:plugin"],"style":"form","explode":false},{"name":"limit","in":"query","required":false,"description":"Rows per page.","schema":{"default":20,"type":"integer","minimum":1,"maximum":10000},"example":10},{"name":"cursor","in":"query","required":false,"description":"The previous page's meta.next_cursor.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"{ data, meta }: meta says when the data is from (as_of), how fresh it is, and the basis of each field.","headers":{"ETag":{"description":"Changes when the answer does; send it back in If-None-Match.","schema":{"type":"string"}},"Cache-Control":{"description":"Fresh until new data for the store is due.","schema":{"type":"string"}},"OpenApps-Contract":{"description":"Hash of the API contract that answered.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScoresApps"}}}},"304":{"$ref":"#/components/responses/304"},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"},"500":{"$ref":"#/components/responses/500"}},"x-fern-sdk-group-name":"scores","x-fern-sdk-method-name":"apps","x-openapps-examples":[{"title":"Top apps across stores","path":"/v1/scores/apps?limit=10"},{"title":"Apps only, no Claude plugins or Cursor rules","path":"/v1/scores/apps?kinds=app%2Cclaude%3Aconnector%2Ccursor%3Aplugin%2Ccursor%3Adirectory_mcp%2Cgrokbot%3Aplugin&limit=10"}],"x-openapps-basis":{"rows[].score":"derived","rows[].rank":"derived","rows[].tier":"derived","rows[].momentum":"derived","rows[].listings[].rank":"derived"},"x-openapps-cache":"data"}},"/v1/scores/{store}":{"get":{"operationId":"scores_list","tags":["scores"],"summary":"A store's apps by OpenApps Rank: a 28-day aggregate of every chart that orders by popularity, with tier and momentum.","description":"Use for who is popular in a store over the last month, not one day's chart. chart narrows to the apps on one chart, ranked among themselves. Derived from store charts, not a usage count.","parameters":[{"name":"store","in":"path","required":true,"description":"App store.","schema":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"example":"chatgpt"},{"name":"chart","in":"query","required":false,"description":"Chart name as stores lists it, e.g. category:productivity, popularity, directory:top.","schema":{"type":"string","minLength":1,"maxLength":120},"example":"category:productivity"},{"name":"limit","in":"query","required":false,"description":"Rows per page.","schema":{"default":20,"type":"integer","minimum":1,"maximum":10000},"example":10},{"name":"cursor","in":"query","required":false,"description":"The previous page's meta.next_cursor.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"{ data, meta }: meta says when the data is from (as_of), how fresh it is, and the basis of each field.","headers":{"ETag":{"description":"Changes when the answer does; send it back in If-None-Match.","schema":{"type":"string"}},"Cache-Control":{"description":"Fresh until new data for the store is due.","schema":{"type":"string"}},"OpenApps-Contract":{"description":"Hash of the API contract that answered.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScoresList"}}}},"304":{"$ref":"#/components/responses/304"},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"},"500":{"$ref":"#/components/responses/500"}},"x-fern-sdk-group-name":"scores","x-fern-sdk-method-name":"list","x-openapps-examples":[{"title":"Top ChatGPT apps by OpenApps Rank","path":"/v1/scores/chatgpt?limit=10"},{"title":"Within one chart","path":"/v1/scores/chatgpt?chart=category%3Aproductivity"}],"x-openapps-basis":{"rows[].score":"derived","rows[].rank":"derived","rows[].tier":"derived","rows[].momentum":"derived","rows[].chart_rank":"derived","rows[].kind_peak":"derived"},"x-openapps-cache":"data","x-openapps-mcp":[{"name":"scores_list","title":"Apps by OpenApps Rank","kind":"projection"}]}},"/v1/scores/tags/{tag}":{"get":{"operationId":"scores_tag","tags":["scores"],"summary":"Apps with one tag by OpenApps Rank, in one store or all.","description":"Use for the top apps in a category. With store, by the best listing's OpenApps Rank there; without, by oa_app@2 (scores_methods). tag: a v1 domain, use or audience value; a domain counts only as an app's primary.","parameters":[{"name":"tag","in":"path","required":true,"description":"Tag id from tags_tree, e.g. gmail.","schema":{"type":"string","minLength":1,"maxLength":60},"example":"video"},{"name":"store","in":"query","required":false,"description":"App store.","schema":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"example":"claude"},{"name":"limit","in":"query","required":false,"description":"Rows per page.","schema":{"default":20,"type":"integer","minimum":1,"maximum":10000},"example":10},{"name":"cursor","in":"query","required":false,"description":"The previous page's meta.next_cursor.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"{ data, meta }: meta says when the data is from (as_of), how fresh it is, and the basis of each field.","headers":{"ETag":{"description":"Changes when the answer does; send it back in If-None-Match.","schema":{"type":"string"}},"Cache-Control":{"description":"Fresh until new data for the store is due.","schema":{"type":"string"}},"OpenApps-Contract":{"description":"Hash of the API contract that answered.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScoresTag"}}}},"304":{"$ref":"#/components/responses/304"},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"},"500":{"$ref":"#/components/responses/500"}},"x-fern-sdk-group-name":"scores","x-fern-sdk-method-name":"tag","x-openapps-examples":[{"title":"Video apps","path":"/v1/scores/tags/video"},{"title":"Developer tools on Claude","path":"/v1/scores/tags/developer-tools?store=claude&limit=10"}],"x-openapps-basis":{"rows[].score":"derived","rows[].rank":"derived","rows[].overall_rank":"derived","rows[].tier":"derived","rows[].momentum":"derived","rows[].listings[].rank":"derived"},"x-openapps-cache":"data"}},"/v1/scores/{store}/{plugin_id}":{"get":{"operationId":"scores_get","tags":["scores"],"summary":"One app's OpenApps Rank figures, its OpenApps Rank within each chart, and daily score and rank series.","description":"Use for how an app has been doing over the last month and whether it is rising. Apps off every counted chart have no figures (charted: false).","parameters":[{"name":"store","in":"path","required":true,"description":"App store.","schema":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"example":"claude"},{"name":"plugin_id","in":"path","required":true,"description":"The listing's id in its store, e.g. plugin_01abc; {store}:{plugin_id} is its ref.","schema":{"type":"string","minLength":1,"maxLength":280},"example":"plugin_01E5qTAcHfq3r1UJ8Zxgzjae"}],"responses":{"200":{"description":"{ data, meta }: meta says when the data is from (as_of), how fresh it is, and the basis of each field.","headers":{"ETag":{"description":"Changes when the answer does; send it back in If-None-Match.","schema":{"type":"string"}},"Cache-Control":{"description":"Fresh until new data for the store is due.","schema":{"type":"string"}},"OpenApps-Contract":{"description":"Hash of the API contract that answered.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScoresGet"}}}},"304":{"$ref":"#/components/responses/304"},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"},"500":{"$ref":"#/components/responses/500"}},"x-fern-sdk-group-name":"scores","x-fern-sdk-method-name":"get","x-openapps-examples":[{"title":"A Claude connector's rank over time","path":"/v1/scores/claude/plugin_01E5qTAcHfq3r1UJ8Zxgzjae"}],"x-openapps-basis":{"figures.score":"derived","figures.rank":"derived","figures.momentum":"derived","chart_ranks[].rank":"derived","series[].score":"derived"},"x-openapps-cache":"data"}},"/v1/scores":{"get":{"operationId":"scores_methods","tags":["scores"],"summary":"How OpenApps Rank is computed, which version is published, and how well each version agrees with published counts.","description":"Use to explain or judge the score. Validation pairs a method's scores with counts stores publish (Claude installs and popularity, cursor.directory installs).","parameters":[],"responses":{"200":{"description":"{ data, meta }: meta says when the data is from (as_of), how fresh it is, and the basis of each field.","headers":{"ETag":{"description":"Changes when the answer does; send it back in If-None-Match.","schema":{"type":"string"}},"Cache-Control":{"description":"Fresh until new data for the store is due.","schema":{"type":"string"}},"OpenApps-Contract":{"description":"Hash of the API contract that answered.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScoresMethods"}}}},"304":{"$ref":"#/components/responses/304"},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"},"500":{"$ref":"#/components/responses/500"}},"x-fern-sdk-group-name":"scores","x-fern-sdk-method-name":"methods","x-openapps-examples":[{"title":"Methods and their validation","path":"/v1/scores"}],"x-openapps-basis":{"methods[].validation[].rho":"derived","methods[].validation[].half":"derived"},"x-openapps-cache":"data"}},"/v1/passes":{"post":{"operationId":"passes_create","tags":["passes"],"summary":"Buy 30 days of Pro for $10 by card","description":"Machine Payments Protocol (MPP). Without a payment the answer is 402, its WWW-Authenticate a Payment challenge (stripe, charge, card). Pay it with a Stripe shared payment token and send the credential in Payment-Authorization; Authorization names the account.","security":[{"DeveloperKey":[]},{"OAuth":["catalog:read"]}],"responses":{"200":{"description":"The pass: when it starts and ends, and the payment's receipt.","headers":{"Payment-Receipt":{"description":"The MPP receipt.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"receipt":{"type":"object"}},"required":["starts_at","ends_at","receipt"]}}}},"400":{"description":"The account already has Pro through a subscription.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/401"},"402":{"description":"Payment required, or the payment failed: WWW-Authenticate carries a fresh Payment challenge.","headers":{"WWW-Authenticate":{"description":"MPP Payment challenge.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"type":"object"}}}},"500":{"$ref":"#/components/responses/500"}},"x-payment-info":{"intent":"charge","method":"stripe","amount":"1000","currency":"usd","description":"30 days of OpenApps Pro, by card"}}}},"components":{"schemas":{"Meta":{"type":"object","properties":{"as_of":{"type":["string","null"]},"run":{"properties":{"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"region":{"type":"string"},"started_at":{"type":"string"}},"required":["store","region","started_at"],"type":["object","null"]},"compared_to":{"properties":{"prev":{"type":["string","null"]},"day":{"type":["string","null"]},"week":{"description":"charts_get on the latest run: the run prev_week is from","type":["string","null"]}},"required":["prev","day"],"type":["object","null"]},"freshness":{"properties":{"cadence":{"type":"string"},"next_expected_at":{"type":["string","null"]},"stale":{"type":"boolean","description":"Any region older than expected"}},"required":["cadence","next_expected_at","stale"],"type":["object","null"]},"basis":{"type":"object","additionalProperties":{"type":"string","enum":["observed","store_reported","derived","proxy","estimate"]}},"coverage":{"type":"object","properties":{"notes":{"type":"array","items":{"type":"string"}},"regions":{"type":"array","items":{"type":"object","properties":{"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"region":{"type":"string"},"as_of":{"description":"When the region's latest data is from","type":["string","null"]},"status":{"type":"string","enum":["current","stale","unavailable","none"]},"dark_since":{"description":"unavailable only: refused since","type":["string","null"]}},"required":["store","region","as_of","status","dark_since"]},"description":"Each region the answer speaks for"}},"required":["notes","regions"]},"next_cursor":{"type":["string","null"]},"truncated":{"type":"boolean"},"truncation_reason":{"type":["string","null"]},"plan":{"description":"What the caller's plan left out (truncation_reason plan)","type":"object","properties":{"tier":{"type":"string","enum":["out","free","plus"],"description":"out (no account), free or plus (Pro)"},"need":{"type":"string","enum":["free","plus"],"description":"The plan that shows the rest"},"cap":{"description":"Rows shown","type":["integer","null"]},"total":{"description":"Rows in full","type":["integer","null"]},"since":{"description":"Earliest time shown","type":["string","null"]},"regions":{"description":"Countries shown","items":{"type":"string"},"type":["array","null"]},"rank":{"description":"Only apps ranked this high","type":["integer","null"]},"by":{"description":"movers_list: climbers, fallers and new entries in full, each cut to cap apart","type":"object","properties":{"up":{"type":"integer"},"down":{"type":"integer"},"new":{"type":"integer"}}},"upgrade_url":{"description":"need plus: a link for the caller's person to buy Pro","type":"string"}},"required":["tier","need","cap","total","since","regions","rank"]}},"required":["as_of","run","compared_to","freshness","basis","coverage","next_cursor","truncated","truncation_reason"]},"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","not_found","plan_required","method_not_allowed","gone","rate_limited","internal"]},"message":{"type":"string"},"param":{"description":"The input the error is about","type":"string"},"allowed":{"description":"Values the input takes","type":"array","items":{"type":"string"}},"nearest":{"description":"Known values closest to the one given","type":"array","items":{"type":"string"}},"need":{"description":"plan_required: the plan that opens it","type":"string","enum":["free","plus"]},"upgrade_url":{"description":"need plus: a link for the caller's person to buy Pro","type":"string"}},"required":["code","message"]}},"required":["error"]},"AppRow":{"type":"object","properties":{"app":{"type":"string"},"slug":{"description":"Unique in its store; listings_get takes it","type":["string","null"]},"name":{"type":["string","null"]},"kind":{"type":"string","enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted"]},"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"url":{"type":"string"},"short_description":{"type":["string","null"]},"publisher":{"type":["string","null"]},"icon":{"description":"The app's icon on the OpenApps site","type":["string","null"]},"product":{"description":"Same value: same product, within one answer","type":["string","null"]}},"required":["app","slug","name","kind","store","url","short_description"]},"ChartRow":{"type":"object","properties":{"position":{"type":"integer"},"app":{"type":"string"},"slug":{"description":"Unique in its store; listings_get takes it","type":["string","null"]},"name":{"type":["string","null"]},"url":{"type":"string"},"prev":{"type":["integer","null"]},"prev_day":{"type":["integer","null"]},"is_new":{"type":"boolean"},"kind":{"type":"string","enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted"]},"publisher":{"type":["string","null"]},"short_description":{"type":["string","null"]},"launched_at":{"type":["string","null"]},"listing":{"type":"object","additionalProperties":{},"description":"Store-specific listing fields, e.g. Claude tier and surfaces"},"icon":{"description":"The app's icon on the OpenApps site","type":["string","null"]},"product":{"description":"Same value: same product, within one answer","type":["string","null"]},"category":{"description":"The app's store category, e.g. Productivity","type":["string","null"]},"linked":{"type":"array","items":{"type":"object","properties":{"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"app":{"type":"string"},"slug":{"type":["string","null"]},"kind":{"type":"string","enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted"]},"url":{"type":"string"}},"required":["store","app","slug","kind","url"]},"description":"The product's apps in other stores"},"prev_week":{"description":"Position ~7 days earlier: charts_get on the latest run, and movers_list with window=7d","type":["integer","null"]},"day_change":{"description":"Cohort change since ~24h earlier: what the site's change pill shows","type":["integer","null"]},"week_change":{"description":"As day_change, since ~7 days earlier: charts_get on the latest run, and movers_list with window=7d","type":["integer","null"]},"first_seen_at":{"type":"string"},"kind_position":{"description":"Position among the list's apps of the same kind, in lists that join kinds (Claude's Most popular); else null","type":["integer","null"]},"tags":{"type":"array","items":{"type":"string"},"description":"Tag ids it carries now, ancestors included, in tags_tree order"}},"required":["position","app","slug","name","url","prev","prev_day","is_new","category","linked"]},"ChartInfo":{"type":"object","properties":{"chart":{"type":"string"},"slug":{"type":"string"},"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"kind":{"type":"string"},"title":{"type":["string","null"]},"description":{"type":["string","null"]},"url":{"type":"string"}},"required":["chart","slug","store","kind","title","url"]},"McpTool":{"type":"object","properties":{"name":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"params":{"type":"array","items":{"type":"string"}},"annotations":{"type":"object","additionalProperties":{}},"input_schema":{"type":"object","additionalProperties":{}},"output_schema":{"type":"object","additionalProperties":{}}},"required":["name","description","params"]},"ToolsetVersion":{"type":"object","properties":{"hash":{"type":"string"},"server_version":{"type":["string","null"]},"seen_since":{"type":"string"},"seen_until":{"type":"string"},"tool_count":{"type":"integer"}},"required":["hash","server_version","seen_since","seen_until","tool_count"]},"PublisherRow":{"type":"object","properties":{"key":{"type":"string","description":"Publisher key: publishers_get takes it"},"name":{"type":"string","description":"The name most of its apps carry"},"stores":{"type":"array","items":{"type":"object","properties":{"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"apps":{"type":"integer"}},"required":["store","apps"]},"description":"Every store it has apps in"},"apps":{"type":"integer"},"best":{"description":"Its app with the best place now","properties":{"chart":{"type":"string"},"title":{"type":["string","null"]},"position":{"type":"integer","description":"1-based; among the app's kind when kind is set"},"kind":{"type":["string","null"]},"app":{"type":"string"}},"required":["chart","title","position","kind","app"],"type":["object","null"]},"icon":{"description":"The app's icon on the OpenApps site","type":["string","null"]}},"required":["key","name","stores","apps","best"]},"ListedApp":{"type":"object","properties":{"app":{"type":"string"},"slug":{"description":"Unique in its store; listings_get takes it","type":["string","null"]},"name":{"type":["string","null"]},"kind":{"type":"string","enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted"]},"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"url":{"type":"string"},"short_description":{"type":["string","null"]},"publisher":{"type":["string","null"]},"icon":{"description":"The app's icon on the OpenApps site","type":["string","null"]},"product":{"description":"Same value: same product, within one answer","type":["string","null"]},"best":{"properties":{"chart":{"type":"string"},"title":{"type":["string","null"]},"position":{"type":"integer","description":"1-based; among the app's kind when kind is set"},"kind":{"type":["string","null"]}},"required":["chart","title","position","kind"],"description":"Best place now: the main ranking if it lists the app, else the best other","type":["object","null"]},"category":{"description":"The app's store category, e.g. Productivity","type":["string","null"]},"tags":{"type":"array","items":{"type":"string"},"description":"Tag ids it carries now, ancestors included, in tags_tree order"},"linked":{"type":"array","items":{"type":"object","properties":{"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"app":{"type":"string"},"slug":{"type":["string","null"]},"kind":{"type":"string","enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted"]},"url":{"type":"string"}},"required":["store","app","slug","kind","url"]},"description":"The product's apps in other stores"},"prev_day":{"description":"best.position ~24h earlier; null: not listed then","type":["integer","null"]},"prev_week":{"description":"As prev_day, ~7 days earlier","type":["integer","null"]},"day_change":{"description":"Cohort change on best.chart since ~24h earlier","type":["integer","null"]},"week_change":{"description":"As day_change, since ~7 days earlier","type":["integer","null"]},"countries":{"description":"ChatGPT: countries whose directory lists it, of those with complete data","type":"object","properties":{"listed":{"type":"integer"},"of":{"type":"integer"}},"required":["listed","of"]},"launched_at":{"type":["string","null"]},"first_seen_at":{"type":"string"},"mcp_status":{"description":"Status of the first MCP server it links","type":["string","null"]}},"required":["app","slug","name","kind","store","url","short_description","best","category","tags","linked"]},"ChangesList":{"type":"object","properties":{"data":{"type":"object","properties":{"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"regions":{"type":"array","items":{"type":"string"}},"since":{"type":"string"},"until":{"type":"string","description":"The newest data in the window"},"total":{"type":"integer"},"counts":{"type":"object","propertyNames":{"type":"string","enum":["rank_move","chart_enter","chart_exit","featuring_enter","featuring_exit","launch","toolset_change","listing_change","release_change","mcp_status_change","delisted","metric_change"]},"additionalProperties":{"type":"integer"},"description":"Events per type over the whole window"},"held":{"description":"Changes in the window the caller's plan holds back, of apps ranked below meta.plan.rank; a listing or release version (the fields one app changed at one time) counts once","type":"integer"},"events":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["rank_move","chart_enter","chart_exit","featuring_enter","featuring_exit","launch","toolset_change","listing_change","release_change","mcp_status_change","delisted","metric_change"]},"t":{"type":"string","description":"When it happened: the data run that recorded it, the release time, or when the new toolset was first recorded"},"basis":{"description":"launch: how t is known: store_reported (the store's launch date), derived (decoded from the ChatGPT app id) or observed (the day the app went live); metric_change: how the metric is known","type":"string","enum":["observed","store_reported","derived","proxy","estimate"]},"app":{"type":"string"},"slug":{"description":"Unique in its store; listings_get takes it","type":["string","null"]},"name":{"type":["string","null"]},"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"kind":{"enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted",null],"type":["string","null"]},"publisher":{"type":["string","null"]},"tags":{"type":"array","items":{"type":"string"},"description":"Tag ids it carries now, ancestors included, in tags_tree order"},"best":{"description":"Best place now: the main ranking if it lists the app, else the best other","properties":{"chart":{"type":"string"},"title":{"type":["string","null"]},"position":{"type":"integer","description":"1-based; among the app's kind when kind is set"},"kind":{"type":["string","null"]}},"required":["chart","title","position","kind"],"type":["object","null"]},"icon":{"description":"The app's icon on the OpenApps site","type":["string","null"]},"region":{"description":"null for store-wide events (launch, toolset_change, listing_change, release_change, mcp_status_change, delisted, metric_change)","type":["string","null"]},"field":{"description":"The listing field that changed; release for a build version or gitRef, reviewed_commit for a reviewed repository commit","type":"string","enum":["name","description","icon","category","publisher","url","keywords","release","reviewed_commit"]},"prev_t":{"description":"listing_change and release_change: when the version this one replaced was first recorded; null when that isn't known, as for a listing already live when its history began","type":["string","null"]},"rank_impact":{"description":"Positions count within the app's kind on a list that joins kinds, as best does","properties":{"chart":{"type":"string"},"title":{"type":["string","null"]},"before":{"description":"1-based position at the change; null when the chart didn't list the app then","type":["integer","null"]},"after":{"description":"1-based position 7 days after the change; null when the chart didn't list the app then","type":["integer","null"]}},"required":["chart","title","before","after"],"type":["object","null"]},"metric":{"type":"string"},"unit":{"type":"string"},"chart":{"type":"string"},"server":{"type":"string"},"before":{"description":"Earlier position, toolset, listing field value, release or MCP status; null when absent","items":{},"additionalProperties":{},"type":["number","string","array","object","null"]},"after":{"description":"New position, toolset, listing value (lists for keywords/category), release, or MCP status (open/auth/dead)","items":{},"additionalProperties":{},"type":["number","string","array","object","null"]},"url":{"type":"string"}},"required":["type","t","app","slug","name","store","best","region","before","after","url"]}}},"required":["store","regions","since","until","total","counts","events"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"]},"MoversList":{"type":"object","properties":{"data":{"type":"object","properties":{"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"region":{"type":"string","description":"The store's main region, which movement is measured in"},"charts":{"type":"array","items":{"type":"object","properties":{"chart":{"type":"string"},"slug":{"type":"string"},"title":{"type":["string","null"]},"region":{"type":"string"},"url":{"type":"string"},"week":{"description":"window=7d only: the time, ~7 days earlier, of the data the rows are compared with","type":["string","null"]},"rows":{"type":"array","items":{"$ref":"#/components/schemas/ChartRow"},"description":"Rows that moved, biggest move up or down first, at most 8 a chart; a product shows once across the charts (with chart: every row)"}},"required":["chart","slug","title","region","url","rows"]}},"featuring":{"type":"array","items":{"type":"object","properties":{"chart":{"type":"string"},"slug":{"type":"string"},"title":{"type":["string","null"]},"entered":{"type":"array","items":{"$ref":"#/components/schemas/AppRow"}},"left":{"type":"array","items":{"$ref":"#/components/schemas/AppRow"}}},"required":["chart","slug","title","entered","left"]},"description":"Entries and exits of the store's featured lists in the latest data"},"metrics":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string"},"title":{"type":"string"},"unit":{"type":"string"},"basis":{"type":"string","enum":["observed","store_reported","derived","proxy","estimate"]},"rows":{"type":"array","items":{"type":"object","properties":{"app":{"type":"string"},"slug":{"description":"Unique in its store; listings_get takes it","type":["string","null"]},"name":{"type":["string","null"]},"kind":{"type":"string","enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted"]},"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"url":{"type":"string"},"short_description":{"type":["string","null"]},"publisher":{"type":["string","null"]},"icon":{"description":"The app's icon on the OpenApps site","type":["string","null"]},"product":{"description":"Same value: same product, within one answer","type":["string","null"]},"value":{"type":"number"},"prev":{"type":"number"},"change":{"type":"number"},"t":{"type":"string"},"prev_t":{"type":["string","null"]},"reported_at":{"type":"string"},"cadence":{"type":"string"},"next_expected_at":{"type":"string"},"stale":{"type":"boolean"}},"required":["app","slug","name","kind","store","url","short_description","value","prev","change","t","prev_t","reported_at","cadence","next_expected_at","stale"]},"description":"Apps whose value moved past the noise floor since a week before the metric's latest update, biggest change first; prev 0: new"}},"required":["metric","title","unit","basis","rows"]}}},"required":["store","region","charts","featuring","metrics"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"]},"StoresGet":{"type":"object","properties":{"data":{"type":"object","properties":{"stores":{"type":"array","items":{"type":"object","properties":{"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"label":{"type":"string"},"apps":{"type":"integer","description":"Listings that are apps: every kind but cursor.directory rules, which kinds still counts"},"kinds":{"type":"object","propertyNames":{"type":"string","enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted"]},"additionalProperties":{"type":"integer"}},"url":{"type":"string"},"last_run":{"type":["string","null"]},"regions":{"type":"array","items":{"type":"object","properties":{"region":{"type":"string"},"last_run":{"type":"string"},"status":{"type":"string","enum":["current","stale","unavailable","none"],"description":"Whether the region's latest data can stand for now; unavailable: the store gives no data there now"}},"required":["region","last_run","status"]}},"charts":{"type":"array","items":{"type":"object","properties":{"chart":{"type":"string"},"kind":{"type":"string"},"title":{"type":["string","null"]},"url":{"type":"string"},"size":{"description":"Apps in its latest list in its home region; null before the first","type":["integer","null"]}},"required":["chart","title"]}},"metrics":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"unit":{"type":"string"},"basis":{"type":"string","enum":["observed","store_reported","derived","proxy","estimate"]},"cadence":{"type":"string","description":"How often it is read: daily or weekly"}},"required":["name","unit","basis","cadence"]}}},"required":["store","label","apps","kinds","url","last_run","regions","metrics"]}}},"required":["stores"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"]},"ChartsGet":{"type":"object","properties":{"data":{"type":"object","properties":{"chart":{"$ref":"#/components/schemas/ChartInfo"},"region":{"type":"string"},"total":{"type":"integer","description":"Apps in the list (of the kinds asked)"},"dropped":{"type":"integer","description":"Apps gone since the previous list"},"rows":{"type":"array","items":{"$ref":"#/components/schemas/ChartRow"}}},"required":["chart","region","total","dropped","rows"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"]},"ChartsRegionsGet":{"type":"object","properties":{"data":{"type":"object","properties":{"chart":{"$ref":"#/components/schemas/ChartInfo"},"regions":{"type":"array","items":{"type":"object","properties":{"region":{"type":"string"},"as_of":{"type":"string","description":"The time of that region's latest list, which its positions come from"}},"required":["region","as_of"]}},"total":{"type":"integer","description":"Apps in the list the rows follow"},"region_count":{"type":"integer","description":"Countries with a current list, which listed_in counts against"},"rows":{"type":"array","items":{"type":"object","properties":{"app":{"type":"string"},"slug":{"description":"Unique in its store; listings_get takes it","type":["string","null"]},"name":{"type":["string","null"]},"url":{"type":"string"},"icon":{"type":["string","null"]},"positions":{"type":"object","additionalProperties":{"type":["integer","null"]}},"listed_in":{"type":"integer","description":"How many of those countries list the app"}},"required":["app","slug","name","url","positions","listed_in"]}}},"required":["chart","regions","total","region_count","rows"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"]},"FeaturingGet":{"type":"object","properties":{"data":{"type":"object","properties":{"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"region":{"type":"string"},"sections":{"type":"array","items":{"type":"object","properties":{"chart":{"type":"string"},"slug":{"type":"string"},"title":{"type":["string","null"]},"rows":{"type":"array","items":{"$ref":"#/components/schemas/ChartRow"}}},"required":["chart","slug","title","rows"]}}},"required":["store","region","sections"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"]},"FeaturingHistory":{"type":"object","properties":{"data":{"type":"object","properties":{"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"since":{"type":"string"},"until":{"type":"string"},"total":{"type":"integer"},"rows":{"type":"array","items":{"type":"object","properties":{"app":{"type":"string"},"name":{"type":["string","null"]},"chart":{"type":"string"},"title":{"type":["string","null"]},"region":{"type":"string"},"entered":{"type":["string","null"]},"entered_before_window":{"type":"boolean"},"entry_kind":{"type":"string","enum":["baseline","first_observed","observed_enter"]},"left":{"type":["string","null"]},"observed_at":{"type":"string"},"url":{"type":"string"},"days":{"type":"array","items":{"type":"object","properties":{"day":{"type":"string","description":"YYYY-MM-DD (UTC)"},"position":{"description":"The app's slot on the shelf at the day's end; null: not on it","type":["integer","null"]}},"required":["day","position"]},"description":"Each day of the window with data in the shelf's country, oldest first; a day without data is left out"}},"required":["app","name","chart","title","region","entered","entered_before_window","entry_kind","left","observed_at","url"]}}},"required":["store","since","until","total","rows"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"]},"LeaderboardsGet":{"type":"object","properties":{"data":{"type":"object","properties":{"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"metric":{"type":"string"},"unit":{"type":"string"},"basis":{"type":"string","enum":["observed","store_reported","derived","proxy","estimate"]},"cadence":{"type":"string"},"total":{"type":"integer","description":"Apps with a value (of the kinds asked)"},"rows":{"type":"array","items":{"type":"object","properties":{"app":{"type":"string"},"slug":{"description":"Unique in its store; listings_get takes it","type":["string","null"]},"name":{"type":["string","null"]},"kind":{"type":"string","enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted"]},"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"url":{"type":"string"},"short_description":{"type":["string","null"]},"publisher":{"type":["string","null"]},"icon":{"description":"The app's icon on the OpenApps site","type":["string","null"]},"product":{"description":"Same value: same product, within one answer","type":["string","null"]},"position":{"type":"integer"},"value":{"type":"number"},"prev":{"type":["number","null"]},"t":{"type":"string","description":"When the value last changed"},"reported_at":{"type":"string"},"cadence":{"type":"string"},"next_expected_at":{"type":"string"},"stale":{"type":"boolean"},"prev_t":{"type":["string","null"]}},"required":["app","slug","name","kind","store","url","short_description","position","value","prev","t","reported_at","cadence","next_expected_at","stale","prev_t"]}}},"required":["store","metric","unit","basis","cadence","total","rows"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"]},"NewList":{"type":"object","properties":{"data":{"type":"object","properties":{"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"since":{"type":"string"},"until":{"type":"string","description":"When the newest data is from"},"total":{"type":"integer"},"category_observation":{"type":"string","enum":["available","unavailable","not_applicable"]},"unfiltered_total":{"type":"integer"},"rows":{"type":"array","items":{"type":"object","properties":{"app":{"type":"string"},"slug":{"description":"Unique in its store; listings_get takes it","type":["string","null"]},"name":{"type":["string","null"]},"kind":{"type":"string","enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted"]},"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"url":{"type":"string"},"short_description":{"type":["string","null"]},"publisher":{"type":["string","null"]},"icon":{"description":"The app's icon on the OpenApps site","type":["string","null"]},"product":{"description":"Same value: same product, within one answer","type":["string","null"]},"launched_at":{"type":["string","null"]},"first_seen_at":{"type":"string"},"released_at":{"type":"string","description":"launched_at, or first_seen_at without one"},"release_basis":{"type":"string","enum":["store_reported","derived","observed"],"description":"derived: decoded from the ChatGPT app id; observed: the day the app went live"},"category":{"description":"First category list it is in (ChatGPT)","type":["string","null"]},"linked":{"type":"array","items":{"type":"object","properties":{"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"app":{"type":"string"},"slug":{"type":["string","null"]},"kind":{"type":"string","enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted"]},"url":{"type":"string"}},"required":["store","app","slug","kind","url"]},"description":"The product's apps in other stores"},"tags":{"type":"array","items":{"type":"string"},"description":"Tag ids it carries now, ancestors included, in tags_tree order"},"lag_days":{"description":"ChatGPT, with Pro (Launch lag): whole days from the app's ID being created to the day it went live; null on other plans, elsewhere or when unknown","type":["integer","null"]}},"required":["app","slug","name","kind","store","url","short_description","first_seen_at","released_at","release_basis","category","linked","lag_days"]}},"facets":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"total":{"type":"integer"}},"required":["value","total"]},"description":"Release-window category or kind counts, before selection and pagination."}},"required":["store","since","until","total","category_observation","unfiltered_total","rows","facets"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"]},"ListingsSearch":{"type":"object","properties":{"data":{"type":"object","properties":{"rows":{"type":"array","items":{"type":"object","properties":{"app":{"type":"string"},"slug":{"description":"Unique in its store; listings_get takes it","type":["string","null"]},"name":{"type":["string","null"]},"kind":{"type":"string","enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted"]},"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"url":{"type":"string"},"short_description":{"type":["string","null"]},"publisher":{"type":["string","null"]},"icon":{"description":"The app's icon on the OpenApps site","type":["string","null"]},"product":{"description":"Same value: same product, within one answer","type":["string","null"]},"best":{"properties":{"chart":{"type":"string"},"title":{"type":["string","null"]},"position":{"type":"integer","description":"1-based; among the app's kind when kind is set"},"kind":{"type":["string","null"]}},"required":["chart","title","position","kind"],"description":"Best place now: the main ranking if it lists the app, else the best other","type":["object","null"]},"category":{"description":"The app's store category, e.g. Productivity","type":["string","null"]},"tags":{"type":"array","items":{"type":"string"},"description":"Tag ids it carries now, ancestors included, in tags_tree order"},"linked":{"type":"array","items":{"type":"object","properties":{"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"app":{"type":"string"},"slug":{"type":["string","null"]},"kind":{"type":"string","enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted"]},"url":{"type":"string"}},"required":["store","app","slug","kind","url"]},"description":"The product's apps in other stores"}},"required":["app","slug","name","kind","store","url","short_description","publisher","best","category","tags","linked"]}}},"required":["rows"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"]},"ListingsList":{"type":"object","properties":{"data":{"type":"object","properties":{"total":{"type":"integer","description":"Listings every filter keeps; with group=app, apps with one or more of them"},"rows":{"type":"array","items":{"type":"object","properties":{"app":{"type":"string"},"slug":{"description":"Unique in its store; listings_get takes it","type":["string","null"]},"name":{"type":["string","null"]},"kind":{"type":"string","enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted"]},"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"url":{"type":"string"},"short_description":{"type":["string","null"]},"publisher":{"type":["string","null"]},"icon":{"description":"The app's icon on the OpenApps site","type":["string","null"]},"product":{"description":"Same value: same product, within one answer","type":["string","null"]},"best":{"properties":{"chart":{"type":"string"},"title":{"type":["string","null"]},"position":{"type":"integer","description":"1-based; among the app's kind when kind is set"},"kind":{"type":["string","null"]}},"required":["chart","title","position","kind"],"description":"Best place now: the main ranking if it lists the app, else the best other","type":["object","null"]},"category":{"description":"The app's store category, e.g. Productivity","type":["string","null"]},"tags":{"type":"array","items":{"type":"string"},"description":"Tag ids it carries now, ancestors included, in tags_tree order"},"linked":{"type":"array","items":{"type":"object","properties":{"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"app":{"type":"string"},"slug":{"type":["string","null"]},"kind":{"type":"string","enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted"]},"url":{"type":"string"}},"required":["store","app","slug","kind","url"]},"description":"The product's apps in other stores"},"prev_day":{"description":"best.position ~24h earlier; null: not listed then","type":["integer","null"]},"prev_week":{"description":"As prev_day, ~7 days earlier","type":["integer","null"]},"day_change":{"description":"Cohort change on best.chart since ~24h earlier","type":["integer","null"]},"week_change":{"description":"As day_change, since ~7 days earlier","type":["integer","null"]},"countries":{"description":"ChatGPT: countries whose directory lists it, of those with complete data","type":"object","properties":{"listed":{"type":"integer"},"of":{"type":"integer"}},"required":["listed","of"]},"launched_at":{"type":["string","null"]},"first_seen_at":{"type":"string"},"mcp_status":{"description":"Status of the first MCP server it links","type":["string","null"]},"app_rank":{"description":"group=app: the app's OpenApps Rank across stores; null: on no counted chart","type":["integer","null"]},"ranks":{"description":"group=app: its rank in each store's OpenApps Rank, in store order","type":"array","items":{"type":"object","properties":{"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"rank":{"type":"integer"}},"required":["store","rank"]}}},"required":["app","slug","name","kind","store","url","short_description","best","category","tags","linked"],"description":"A listing; with group=app, the app's best listing, carrying every tag of its listings"}},"facets":{"type":"object","properties":{"store":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"n":{"type":"integer"}},"required":["value","n"]}},"kind":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"n":{"type":"integer"}},"required":["value","n"]},"description":"Store-qualified, e.g. claude:connector or chatgpt:apps_sdk"},"family":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"n":{"type":"integer"}},"required":["value","n"]}},"category":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"n":{"type":"integer"}},"required":["value","n"]}},"publisher":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","description":"Publisher key"},"name":{"type":"string"},"n":{"type":"integer"}},"required":["value","name","n"]},"description":"The 100 with most listings, then any asked for"},"status":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"n":{"type":"integer"}},"required":["value","n"]}},"linked":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"n":{"type":"integer"}},"required":["value","n"]}},"availability":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"n":{"type":"integer"}},"required":["value","n"]}},"released":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"n":{"type":"integer"}},"required":["value","n"]},"description":"Listings released in the last 7 and 30 days before the newest data; value is a released_since"},"tags":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"n":{"type":"integer"}},"required":["value","n"]},"description":"Listings with each tag among those the other filters keep, after exclude and, with match all, every tag asked for"}},"required":["store","kind","family","category","publisher","status","linked","availability","released","tags"],"description":"Per filter, how many listings each value has among those the other filters keep"}},"required":["total","rows"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"]},"ListingsGet":{"type":"object","properties":{"data":{"type":"object","properties":{"app":{"type":"object","properties":{"app":{"type":"string"},"slug":{"description":"Unique in its store; listings_get takes it","type":["string","null"]},"name":{"type":["string","null"]},"kind":{"type":"string","enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted"]},"publisher":{"type":["string","null"]},"short_description":{"type":["string","null"]},"launched_at":{"type":["string","null"]},"first_seen_at":{"type":"string"},"url":{"type":"string"},"store_url":{"description":"The app's page in the store","type":["string","null"]},"availability":{"type":"array","items":{"type":"object","properties":{"region":{"type":"string"},"status":{"type":"string","enum":["listed","not_listed","unknown"]},"as_of":{"type":["string","null"]},"reason":{"type":"string","enum":["complete","incomplete","missing","stale","unavailable","none"]}},"required":["region","status","as_of","reason"]}},"also":{"type":"array","items":{"type":"object","properties":{"app":{"type":"string"},"slug":{"type":["string","null"]},"kind":{"type":"string","enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted"]},"url":{"type":"string"}},"required":["app","kind","url"]},"description":"The app's other listings in this store"},"linked":{"type":"array","items":{"type":"object","properties":{"app":{"type":"string"},"slug":{"type":["string","null"]},"name":{"type":["string","null"]},"short_description":{"type":["string","null"]},"kind":{"type":"string","enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted"]},"url":{"type":"string"},"evidence":{"type":"array","items":{"type":"string"}}},"required":["app","slug","name","short_description","kind","url","evidence"]},"description":"The app's listings in other stores, with what binds each: server (same MCP server), owner_domain, publisher, store_name, admin, or an agent check"},"part_of":{"description":"The app this listing belongs to (apps_get); null until binding gives it one","properties":{"slug":{"type":"string"},"name":{"type":["string","null"]},"url":{"type":"string"}},"required":["slug","name","url"],"type":["object","null"]},"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"plugin_id":{"type":"string"},"version":{"type":["string","null"]},"last_seen_at":{"type":"string"},"icon":{"type":["string","null"]},"listing":{"type":"object","additionalProperties":{}},"tags":{"type":"array","items":{"type":"string"},"description":"Tag ids it carries now, ancestors included, in tags_tree order"}},"required":["app","slug","name","kind","publisher","short_description","launched_at","first_seen_at","url","store_url","availability","also","linked","part_of"]},"apps":{"description":"With apps: each of those listings by its ref, in the order asked, as app is given","type":"object","additionalProperties":{"type":"object","properties":{"app":{"type":"string"},"slug":{"description":"Unique in its store; listings_get takes it","type":["string","null"]},"name":{"type":["string","null"]},"kind":{"type":"string","enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted"]},"publisher":{"type":["string","null"]},"short_description":{"type":["string","null"]},"launched_at":{"type":["string","null"]},"first_seen_at":{"type":"string"},"url":{"type":"string"},"store_url":{"description":"The app's page in the store","type":["string","null"]},"availability":{"type":"array","items":{"type":"object","properties":{"region":{"type":"string"},"status":{"type":"string","enum":["listed","not_listed","unknown"]},"as_of":{"type":["string","null"]},"reason":{"type":"string","enum":["complete","incomplete","missing","stale","unavailable","none"]}},"required":["region","status","as_of","reason"]}},"also":{"type":"array","items":{"type":"object","properties":{"app":{"type":"string"},"slug":{"type":["string","null"]},"kind":{"type":"string","enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted"]},"url":{"type":"string"}},"required":["app","kind","url"]},"description":"The app's other listings in this store"},"linked":{"type":"array","items":{"type":"object","properties":{"app":{"type":"string"},"slug":{"type":["string","null"]},"name":{"type":["string","null"]},"short_description":{"type":["string","null"]},"kind":{"type":"string","enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted"]},"url":{"type":"string"},"evidence":{"type":"array","items":{"type":"string"}}},"required":["app","slug","name","short_description","kind","url","evidence"]},"description":"The app's listings in other stores, with what binds each: server (same MCP server), owner_domain, publisher, store_name, admin, or an agent check"},"part_of":{"description":"The app this listing belongs to (apps_get); null until binding gives it one","properties":{"slug":{"type":"string"},"name":{"type":["string","null"]},"url":{"type":"string"}},"required":["slug","name","url"],"type":["object","null"]},"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"plugin_id":{"type":"string"},"version":{"type":["string","null"]},"last_seen_at":{"type":"string"},"icon":{"type":["string","null"]},"listing":{"type":"object","additionalProperties":{}},"tags":{"type":"array","items":{"type":"string"},"description":"Tag ids it carries now, ancestors included, in tags_tree order"}},"required":["app","slug","name","kind","publisher","short_description","launched_at","first_seen_at","url","store_url","availability","also","linked","part_of"]}}},"required":["app"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"]},"ListingsRanksCurrent":{"type":"object","properties":{"data":{"type":"object","properties":{"app":{"type":"string"},"charts":{"type":"array","items":{"type":"object","properties":{"chart":{"type":"string"},"title":{"type":["string","null"]},"kind":{"type":"string"},"url":{"type":"string"},"regions":{"type":"integer"},"best":{"type":"object","properties":{"region":{"type":"string"},"position":{"type":"integer"},"as_of":{"type":"string","description":"When the position is from"}},"required":["region","position","as_of"]},"primary":{"description":"Position in the store's main region","type":["integer","null"]},"kind_position":{"description":"primary among its own kind, in lists that join kinds; else null","type":["integer","null"]},"prev_day":{"description":"kind_position (on lists that join kinds) or primary ~24h earlier; null: not listed then","type":["integer","null"]},"prev_week":{"description":"As prev_day, ~7 days earlier","type":["integer","null"]},"day_change":{"description":"Cohort change in the main region since ~24h earlier","type":["integer","null"]},"week_change":{"description":"As day_change, since ~7 days earlier","type":["integer","null"]},"positions":{"type":"array","items":{"type":"object","properties":{"region":{"type":"string"},"position":{"type":"integer"},"as_of":{"type":"string","description":"When the position is from"}},"required":["region","position","as_of"]}}},"required":["chart","title","kind","url","regions","best","primary","kind_position"]}}},"required":["app","charts"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"]},"ListingsRanksHistory":{"type":"object","properties":{"data":{"type":"object","properties":{"app":{"type":"string"},"since":{"type":"string","description":"Start of the home-region window"},"until":{"description":"End of the window: to, else the latest data","type":["string","null"]},"series":{"type":"array","items":{"type":"object","properties":{"app":{"type":"string","description":"The listing the series is of"},"chart":{"type":"string"},"title":{"type":["string","null"]},"kind":{"type":"string"},"region":{"type":"string"},"url":{"type":"string"},"points":{"type":"array","items":{"type":"object","properties":{"t":{"type":"string","description":"When the position was recorded; a carried point's is the time of the latest data, the list unchanged"},"position":{"type":"integer"},"kind_position":{"description":"Among its own kind, in lists that join kinds; else null","type":["integer","null"]},"carried":{"type":"boolean"}},"required":["t","position","kind_position","carried"]}}},"required":["app","chart","title","kind","region","url","points"]}}},"required":["app","since","until","series"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"]},"ListingsMetrics":{"type":"object","properties":{"data":{"type":"object","properties":{"app":{"type":"string"},"metrics":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"unit":{"type":"string"},"basis":{"type":"string","enum":["observed","store_reported","derived","proxy","estimate"]},"reported_at":{"type":"string","description":"Latest reported period, including unchanged values"},"cadence":{"type":"string"},"next_expected_at":{"type":"string"},"stale":{"type":"boolean"},"value":{"type":["number","null"]},"t":{"type":"string"},"prev":{"type":["number","null"]},"prev_t":{"type":["string","null"]},"points":{"type":"array","items":{"type":"object","properties":{"t":{"type":"string"},"value":{"type":["number","null"]}},"required":["t","value"]}}},"required":["name","unit","basis","reported_at","cadence","next_expected_at","stale","value","t","prev","prev_t"]}}},"required":["app","metrics"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"]},"ListingsTools":{"type":"object","properties":{"data":{"type":"object","properties":{"app":{"type":"string"},"servers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"The server's OpenApps id: /v1/mcp/servers/{id}"},"url":{"type":"string"},"status":{"type":["string","null"]},"transport":{"type":["string","null"]},"auth_hint":{"type":["string","null"]},"checked_at":{"type":["string","null"]},"snapshot":{"description":"Latest toolset; null if never seen without sign-in","properties":{"hash":{"type":"string"},"server_name":{"type":["string","null"]},"server_version":{"type":["string","null"]},"protocol_version":{"type":["string","null"]},"seen_since":{"type":["string","null"]},"tool_count":{"type":"integer"},"prompt_count":{"type":"integer"},"resource_count":{"type":"integer"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/McpTool"}}},"required":["hash","server_name","server_version","protocol_version","seen_since","tool_count","prompt_count","resource_count","tools"],"type":["object","null"]},"history":{"type":"array","items":{"$ref":"#/components/schemas/ToolsetVersion"}}},"required":["id","url","status","transport","auth_hint","checked_at","snapshot"]}}},"required":["app","servers"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"]},"ListingsWidgets":{"type":"object","properties":{"data":{"type":"object","properties":{"app":{"type":"string"},"widgets":{"type":"array","items":{"type":"object","properties":{"tool":{"type":"string"},"title":{"type":["string","null"]},"description":{"type":["string","null"]},"template":{"type":"string","description":"The template's resource URI"},"since":{"type":"string","description":"Since when the app has used this version of the template"},"images":{"type":"object","properties":{"light":{"type":"object","properties":{"url":{"type":"string"},"width":{"type":"integer"},"height":{"type":"integer"}},"required":["url","width","height"]},"dark":{"type":"object","properties":{"url":{"type":"string"},"width":{"type":"integer"},"height":{"type":"integer"}},"required":["url","width","height"]},"mobile":{"properties":{"url":{"type":"string"},"width":{"type":"integer"},"height":{"type":"integer"}},"required":["url","width","height"],"type":["object","null"]}},"required":["light","dark","mobile"]}},"required":["tool","title","description","template","since","images"]},"description":"In the order the app lists its tools"}},"required":["app","widgets"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"]},"ListingsVersions":{"type":"object","properties":{"data":{"type":"object","properties":{"app":{"type":"string"},"listing":{"type":"array","items":{"type":"object","properties":{"hash":{"type":"string"},"seen_since":{"type":"string"},"seen_until":{"type":"string"},"data":{"type":"object","additionalProperties":{},"description":"The record as the store returned it"}},"required":["hash","seen_since","seen_until"]}},"detail":{"type":"array","items":{"type":"object","properties":{"hash":{"type":"string"},"seen_since":{"type":"string"},"seen_until":{"type":"string"},"data":{"type":"object","additionalProperties":{},"description":"The record as the store returned it"}},"required":["hash","seen_since","seen_until"]}}},"required":["app","listing","detail"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"]},"AppsGet":{"type":"object","properties":{"data":{"type":"object","properties":{"slug":{"type":"string","description":"The app's slug, as its listings' rows carry it in product"},"name":{"description":"The name most of its listings carry","type":["string","null"]},"listings":{"type":"array","items":{"type":"object","properties":{"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"app":{"type":"string"},"slug":{"description":"Unique in its store; listings_get takes it","type":["string","null"]},"name":{"type":["string","null"]},"kind":{"type":"string","enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted"]},"publisher":{"type":["string","null"]},"category":{"description":"The app's store category, e.g. Productivity","type":["string","null"]},"best":{"properties":{"chart":{"type":"string"},"title":{"type":["string","null"]},"position":{"type":"integer","description":"1-based; among the app's kind when kind is set"},"kind":{"type":["string","null"]}},"required":["chart","title","position","kind"],"description":"Best place now: the main ranking if it lists the app, else the best other","type":["object","null"]},"launched_at":{"type":["string","null"]},"first_seen_at":{"type":"string"},"url":{"type":"string"},"icon":{"type":["string","null"]},"charts":{"type":"integer","description":"Ranked charts that list it now"},"countries":{"description":"ChatGPT: of the countries with current data, how many list it; null elsewhere","properties":{"listed":{"type":"integer"},"of":{"type":"integer"},"missing":{"description":"The countries that don't list it, by region code; with an account only","type":"array","items":{"type":"string"}}},"required":["listed","of"],"type":["object","null"]},"tools":{"type":"integer","description":"Tools its MCP server lists, else the tool or skill names its listing gives"},"mcp":{"description":"Its MCP server's host","type":["string","null"]},"website":{"description":"The website its listing names","type":["string","null"]},"prompts":{"type":"integer","description":"Starter prompts its listing gives"},"changes":{"type":"integer","description":"Listing changes in the last 30 days"},"oa_rank":{"description":"Its store's OpenApps Rank; null: uncharted","type":["integer","null"]}},"required":["store","app","slug","name","kind","publisher","category","best","launched_at","first_seen_at","url","charts","countries","tools","mcp","website","prompts","changes","oa_rank"]},"description":"By store, then name"},"rank":{"description":"OpenApps Rank across stores (oa_app@2); null when no listing is charted","properties":{"method":{"type":"string"},"day":{"type":"string"},"score":{"type":"number"},"rank":{"type":"integer","description":"Among apps across every store, 1 first"},"tier":{"type":"integer","description":"Best tier of its listings"},"tier_title":{"type":"string"},"momentum":{"description":"Change over one window","type":["number","null"]}},"required":["method","day","score","rank","tier","tier_title","momentum"],"type":["object","null"]},"match":{"type":"object","properties":{"confidence":{"type":"string","enum":["high","medium","low"],"description":"high: three or more signals agree; medium: two; low: one"},"evidence":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["mcp_host","developer","website","name"]},"value":{"description":"What was compared","type":["string","null"]},"ok":{"type":"boolean","description":"Whether the listings agree on it"}},"required":["kind","value","ok"]}},"pairs":{"type":"array","items":{"type":"object","properties":{"a":{"type":"string"},"b":{"type":"string"},"state":{"type":"string","enum":["suggested","bound","rejected"],"description":"bound: strong evidence or a reviewer's yes; rejected: a reviewer's no"},"evidence":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string"},"strong":{"type":"boolean","description":"Binds the pair on its own"},"detail":{"type":["string","null"]}},"required":["source","strong","detail"]}}},"required":["a","b","state","evidence"]},"description":"Each pair of its listings, by listing ref, that evidence or a review names"}},"required":["confidence","evidence"]},"tools":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Lower case, separators as spaces, without the app's name"},"apps":{"type":"array","items":{"type":"string"},"description":"The listings that name it, by listing ref"},"names":{"type":"array","items":{"type":"string"},"description":"The name each of those listings gives it, in apps' order"}},"required":["name","apps","names"]},"description":"Most listings first, then A to Z"}},"required":["slug","name","listings","rank","match","tools"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"]},"AppsList":{"type":"object","properties":{"data":{"type":"object","properties":{"total":{"type":"integer","description":"Apps that match"},"rows":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":["string","null"]},"stores":{"type":"array","items":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"description":"In store order"}},"required":["slug","name","stores"]}}},"required":["total","rows"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"]},"PublishersList":{"type":"object","properties":{"data":{"type":"object","properties":{"total":{"type":"integer","description":"Publishers in the selection"},"rows":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"Publisher key: publishers_get takes it"},"name":{"type":"string","description":"The name most of its apps carry"},"stores":{"type":"array","items":{"type":"object","properties":{"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"apps":{"type":"integer"}},"required":["store","apps"]},"description":"Every store it has apps in"},"apps":{"type":"integer"},"best":{"description":"Its app with the best place now","properties":{"chart":{"type":"string"},"title":{"type":["string","null"]},"position":{"type":"integer","description":"1-based; among the app's kind when kind is set"},"kind":{"type":["string","null"]},"app":{"type":"string"}},"required":["chart","title","position","kind","app"],"type":["object","null"]},"icon":{"description":"The app's icon on the OpenApps site","type":["string","null"]},"top":{"description":"Its listing with the best place now, in the stores asked; null when none ranks","properties":{"app":{"type":"string"},"slug":{"description":"Unique in its store; listings_get takes it","type":["string","null"]},"kind":{"type":"string","enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted"]},"name":{"type":["string","null"]},"icon":{"description":"The listing's icon on the OpenApps site","type":["string","null"]},"best":{"type":"object","properties":{"chart":{"type":"string"},"title":{"type":["string","null"]},"position":{"type":"integer","description":"1-based; among the app's kind when kind is set"},"kind":{"type":["string","null"]}},"required":["chart","title","position","kind"],"description":"Best place now: the main ranking if it lists the app, else the best other"},"prev_day":{"description":"Position on the row's best chart then (best.chart); null: not listed then","type":["integer","null"]},"prev_week":{"description":"Position on the row's best chart then (best.chart); null: not listed then","type":["integer","null"]},"day_change":{"description":"Cohort change on best.chart since ~24h earlier","type":["integer","null"]},"week_change":{"description":"As day_change, since ~7 days earlier","type":["integer","null"]}},"required":["app","slug","kind","name","best"],"type":["object","null"]},"tags":{"type":"array","items":{"type":"string"},"description":"The two tags that describe its listings most often"}},"required":["key","name","stores","apps","best","top","tags"]}},"summary":{"type":"object","properties":{"publishers":{"type":"integer","description":"Publishers in the selection"},"on_both":{"type":"integer","description":"Of them, those with apps in more than one store"},"chatgpt_with_developer_pct":{"type":"number","description":"ChatGPT apps whose listing names a developer, percent"},"chatgpt_with_developer":{"type":"integer"},"claude_with_publisher_pct":{"type":"number","description":"Claude apps that name a publisher, percent"},"claude_with_publisher":{"type":"integer"}},"required":["publishers","on_both","chatgpt_with_developer_pct","chatgpt_with_developer","claude_with_publisher_pct","claude_with_publisher"]}},"required":["total","rows","summary"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"]},"PublishersGet":{"type":"object","properties":{"data":{"type":"object","properties":{"publisher":{"$ref":"#/components/schemas/PublisherRow"},"apps":{"type":"array","items":{"type":"object","properties":{"app":{"type":"string"},"slug":{"description":"Unique in its store; listings_get takes it","type":["string","null"]},"name":{"type":["string","null"]},"kind":{"type":"string","enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted"]},"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"url":{"type":"string"},"short_description":{"type":["string","null"]},"publisher":{"type":["string","null"]},"icon":{"description":"The app's icon on the OpenApps site","type":["string","null"]},"product":{"description":"Same value: same product, within one answer","type":["string","null"]},"best":{"properties":{"chart":{"type":"string"},"title":{"type":["string","null"]},"position":{"type":"integer","description":"1-based; among the app's kind when kind is set"},"kind":{"type":["string","null"]}},"required":["chart","title","position","kind"],"description":"Best place now: the main ranking if it lists the app, else the best other","type":["object","null"]},"category":{"description":"The app's store category, e.g. Productivity","type":["string","null"]},"launched_at":{"type":["string","null"]},"first_seen_at":{"type":"string"},"prev_day":{"description":"Position on the row's best chart then (best.chart); null: not listed then","type":["integer","null"]},"prev_week":{"description":"Position on the row's best chart then (best.chart); null: not listed then","type":["integer","null"]},"day_change":{"description":"Cohort change on best.chart since ~24h earlier","type":["integer","null"]},"week_change":{"description":"As day_change, since ~7 days earlier","type":["integer","null"]}},"required":["app","slug","name","kind","store","url","short_description","best","category","launched_at","first_seen_at"]},"description":"Best place first, then by store and name"},"products":{"type":"array","items":{"type":"object","properties":{"product":{"type":"string","description":"Same value: same app, within one answer"},"slug":{"type":"string","description":"apps_get takes it"},"name":{"type":["string","null"]},"listings":{"type":"array","items":{"type":"object","properties":{"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"app":{"type":"string"},"url":{"type":"string"}},"required":["store","app","url"]}}},"required":["product","slug","name","listings"]},"description":"Apps one of its listings belongs to, with every listing of each"},"countries":{"description":"Its ChatGPT app listed in the most countries: in how many of the countries with current data; null without a ChatGPT app","properties":{"listed":{"type":"integer"},"of":{"type":"integer"}},"required":["listed","of"],"type":["object","null"]},"shelves":{"type":"object","properties":{"n":{"type":"integer"},"names":{"type":"array","items":{"type":"string"}}},"required":["n","names"],"description":"Its ChatGPT apps on a ChatGPT home shelf now, and their names"},"with_mcp":{"type":"object","properties":{"n":{"type":"integer","description":"Claude apps whose MCP server has a status (listings_list mcp_status)"},"of_claude":{"type":"integer","description":"Its Claude apps"}},"required":["n","of_claude"]},"identities":{"type":"object","properties":{"n":{"type":"integer","description":"Distinct websites and MCP hosts its listings name"},"websites":{"description":"Website domains; OpenApps Pro only","type":"array","items":{"type":"string"}},"hosts":{"description":"MCP server hosts; OpenApps Pro only","type":"array","items":{"type":"string"}}},"required":["n"]},"others_on_both":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"listings":{"type":"integer"}},"required":["key","name","listings"]},"description":"Up to 8 other publishers with apps in more than one store, most apps first"}},"required":["publisher","apps","products","countries","shelves","with_mcp","identities","others_on_both"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"]},"TagsTree":{"type":"object","properties":{"data":{"type":"object","properties":{"version":{"type":"string","description":"The tag vocabulary's version"},"tagger":{"type":"string","description":"Methods that assign tags"},"tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"facet":{"type":"string","enum":["job","works","for","cap"]},"parent":{"description":"The tag one level up; null for a top tag","type":["string","null"]},"depth":{"type":"integer","description":"1 for a top tag"},"other":{"type":"boolean","description":"An 'X: Other' tag: in its parent, in none of the parent's narrower tags"},"n":{"type":"integer","description":"Apps carrying it, in the stores asked for"},"stores":{"type":"object","propertyNames":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"additionalProperties":{"type":"integer"},"description":"Apps carrying it per store"},"description":{"type":"string"},"icon":{"description":"A brand's mark on the OpenApps site: its website's favicon","type":"string"},"synonyms":{"type":"array","items":{"type":"string"},"description":"Other names it answers to"}},"required":["id","label","facet","parent","depth","other","n","stores","synonyms"]},"description":"Vocabulary order: each facet's tree, a tag before the tags under it"},"facets":{"type":"array","items":{"type":"object","properties":{"facet":{"type":"string","enum":["job","works","for","cap"]},"label":{"type":"string"},"hint":{"type":"string"},"apps":{"type":"integer","description":"Apps with at least one of its tags"}},"required":["facet","label","hint","apps"]}},"stores":{"type":"array","items":{"type":"object","properties":{"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"apps":{"type":"integer","description":"Apps tagged: every app OpenApps has seen in the store, of the kinds asked"}},"required":["store","apps"]}}},"required":["version","tagger","tags","facets","stores"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"]},"TagsGet":{"type":"object","properties":{"data":{"type":"object","properties":{"tag":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"facet":{"type":"string","enum":["job","works","for","cap"]},"parent":{"description":"The tag one level up; null for a top tag","type":["string","null"]},"depth":{"type":"integer","description":"1 for a top tag"},"other":{"type":"boolean","description":"An 'X: Other' tag: in its parent, in none of the parent's narrower tags"},"n":{"type":"integer","description":"Apps carrying it, in the stores asked for"},"stores":{"type":"object","propertyNames":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"additionalProperties":{"type":"integer"},"description":"Apps carrying it per store"},"description":{"type":"string"},"icon":{"description":"A brand's mark on the OpenApps site: its website's favicon","type":"string"}},"required":["id","label","facet","parent","depth","other","n","stores"]},"url":{"type":"string","description":"Its page"},"top":{"type":"array","items":{"$ref":"#/components/schemas/ListedApp"},"description":"By store: apps with the tag, best chart place first, at most limit"},"kpis":{"type":"object","properties":{"new_30d":{"type":"integer","description":"Apps with the tag created (ChatGPT: the app's id) or launched in the last 30 days"},"with_mcp":{"type":"object","properties":{"n":{"type":"integer","description":"Claude apps with the tag whose MCP server has a status (listings_list mcp_status)"},"of_claude":{"type":"integer","description":"Claude apps with the tag"}},"required":["n","of_claude"]},"on_both":{"type":"integer","description":"Apps with the tag whose product is listed in another store too"}},"required":["new_30d","with_mcp","on_both"]},"weeks":{"type":"array","items":{"type":"object","properties":{"week":{"type":"string","description":"The week's Monday, YYYY-MM-DD"},"n":{"type":"integer","description":"Apps with the tag created (ChatGPT) or launched that week"}},"required":["week","n"]},"description":"Every week of the window to the newest data's, oldest first"},"path":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"}},"required":["id","label"]},"description":"From its top tag down to it"},"parent":{"properties":{"id":{"type":"string"},"label":{"type":"string"},"facet":{"type":"string","enum":["job","works","for","cap"]},"parent":{"description":"The tag one level up; null for a top tag","type":["string","null"]},"depth":{"type":"integer","description":"1 for a top tag"},"other":{"type":"boolean","description":"An 'X: Other' tag: in its parent, in none of the parent's narrower tags"},"n":{"type":"integer","description":"Apps carrying it, in the stores asked for"},"stores":{"type":"object","propertyNames":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"additionalProperties":{"type":"integer"},"description":"Apps carrying it per store"},"description":{"type":"string"},"icon":{"description":"A brand's mark on the OpenApps site: its website's favicon","type":"string"}},"required":["id","label","facet","parent","depth","other","n","stores"],"type":["object","null"]},"children":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"facet":{"type":"string","enum":["job","works","for","cap"]},"parent":{"description":"The tag one level up; null for a top tag","type":["string","null"]},"depth":{"type":"integer","description":"1 for a top tag"},"other":{"type":"boolean","description":"An 'X: Other' tag: in its parent, in none of the parent's narrower tags"},"n":{"type":"integer","description":"Apps carrying it, in the stores asked for"},"stores":{"type":"object","propertyNames":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"additionalProperties":{"type":"integer"},"description":"Apps carrying it per store"},"description":{"type":"string"},"icon":{"description":"A brand's mark on the OpenApps site: its website's favicon","type":"string"}},"required":["id","label","facet","parent","depth","other","n","stores"]},"description":"Its narrower tags"},"siblings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"n":{"type":"integer","description":"Apps carrying it, in the stores asked for"}},"required":["id","label","n"]},"description":"Other tags under its parent, in vocabulary order; none for a top tag"},"related":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"facet":{"type":"string","enum":["job","works","for","cap"]},"n":{"type":"integer","description":"Apps with both tags"},"lift":{"type":"number","description":"How many times more often the tag's apps carry it than apps at large"}},"required":["id","label","facet","n","lift"]},"description":"At most 10, strongest first, without its ancestors and narrower tags"}},"required":["tag","url","top","kpis","weeks","path","parent","children","siblings","related"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"]},"MarketGet":{"type":"object","properties":{"data":{"type":"object","properties":{"stores":{"type":"array","items":{"type":"object","properties":{"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"label":{"type":"string"},"url":{"type":"string"},"apps":{"type":"integer"},"kinds":{"type":"object","propertyNames":{"type":"string","enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted"]},"additionalProperties":{"type":"integer"}},"last_run":{"type":["string","null"]},"launches":{"type":"object","properties":{"basis":{"type":"string","enum":["observed","store_reported","derived","proxy","estimate"],"description":"derived on ChatGPT (decoded from app ids), store_reported on Claude and Cursor"},"last_7d":{"type":"integer"},"weeks":{"type":"array","items":{"type":"object","properties":{"week":{"type":"string","description":"Monday the week starts"},"n":{"type":"integer"}},"required":["week","n"]}},"weekdays":{"type":"array","items":{"type":"object","properties":{"day":{"type":"integer","minimum":0,"maximum":6,"description":"0 Monday to 6 Sunday"},"n":{"type":"integer"}},"required":["day","n"]},"description":"Every app with a launch date by its weekday: the day its id was created on ChatGPT, the store's launch date elsewhere"}},"required":["basis","last_7d","weeks","weekdays"]},"top10":{"description":"Category lists (ChatGPT categories, Claude departments of 10 or more) whose top 10 held the same apps in the same order as the previous day; null on Cursor and Grok Bot","properties":{"frozen":{"type":"integer"},"of":{"type":"integer"}},"required":["frozen","of"],"type":["object","null"]},"lists":{"type":"array","items":{"type":"object","properties":{"chart":{"type":"string"},"title":{"type":["string","null"]},"apps":{"type":"integer"},"collection":{"type":"boolean","description":"A curated collection rather than a category"}},"required":["chart","title","apps","collection"]},"description":"Category lists in the main region, largest first"}},"required":["store","label","url","apps","kinds","last_run","launches","top10"]}},"mcp":{"type":"object","properties":{"servers":{"type":"integer","description":"MCP servers linked from any store"},"by_status":{"type":"array","items":{"type":"object","properties":{"status":{"type":["string","null"]},"n":{"type":"integer"}},"required":["status","n"]}},"snapshots":{"type":"integer"},"cross_store":{"type":"integer","description":"Servers linked from apps in more than one store"},"url":{"type":"string","description":"The Market pulse page"},"open":{"type":"object","properties":{"servers":{"type":"integer"},"tools":{"type":"integer"},"tools_per_server":{"type":"object","properties":{"median":{"type":["integer","null"]},"p90":{"type":["integer","null"]},"max":{"type":["integer","null"]},"histogram":{"type":"array","items":{"type":"object","properties":{"bucket":{"type":"string"},"n":{"type":"integer"}},"required":["bucket","n"]}}},"required":["median","p90","max"]},"annotations":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"tools":{"type":"integer"},"servers":{"type":"integer"},"tools_true":{"type":["integer","null"]}},"required":["name","tools","servers"]},"description":"Tools and servers that set each annotation; tools_true: tools setting the hint to true"},"output_schema":{"type":"object","properties":{"tools":{"type":"integer"},"servers":{"type":"integer"}},"required":["tools","servers"]},"meta":{"type":"object","properties":{"tools":{"type":"integer"},"servers":{"type":"integer"}},"required":["tools","servers"]},"params":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"tools":{"type":"integer"},"servers":{"type":"integer"}},"required":["name","tools","servers"]},"description":"Most common input parameter names"},"params_per_tool":{"type":"object","properties":{"median":{"type":["integer","null"]},"p90":{"type":["integer","null"]},"none_pct":{"type":["number","null"]},"required_pct":{"type":["number","null"]}},"required":["median","p90","none_pct","required_pct"]},"description_len":{"type":"object","properties":{"median":{"type":["integer","null"]},"p90":{"type":["integer","null"]}},"required":["median","p90"]},"protocols":{"type":"array","items":{"type":"object","properties":{"version":{"type":"string"},"n":{"type":"integer"}},"required":["version","n"]}}},"required":["servers","tools","tools_per_server","annotations","output_schema","params","params_per_tool","description_len","protocols"],"description":"Across every open server's latest toolset"}},"required":["servers","by_status","snapshots","cross_store","url","open"]},"facts":{"type":"object","properties":{"chatgpt":{"description":"null unless ChatGPT is asked for","properties":{"apps_sdk":{"type":"integer","description":"Apps SDK apps (family plugin_asdk_app)"},"top100":{"type":"object","properties":{"every":{"type":"integer","description":"Listed in every country with data"},"only_us":{"type":"integer","description":"Listed in the United States only"},"of":{"type":"integer","description":"Apps in a US top 100 of any category list, collections included"},"countries":{"type":"integer","description":"Countries with data"}},"required":["every","only_us","of","countries"]},"shelves_in_order":{"type":"object","properties":{"n":{"type":"integer"},"of":{"type":"integer"}},"required":["n","of"],"description":"US home shelves that are an unbroken run of their category list, of every shelf"}},"required":["apps_sdk","top100","shelves_in_order"],"type":["object","null"]},"claude":{"description":"null unless Claude is asked for","properties":{"in_most_popular":{"type":"integer","description":"Listings Most popular ranks"},"mcp_auth":{"type":"integer","description":"Listings whose MCP server asks for a sign-in (mcp_status auth)"},"mcp_status":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string"},"n":{"type":"integer"}},"required":["status","n"]},"description":"Listings that link an MCP server, by its latest status (the best of several)"}},"required":["in_most_popular","mcp_auth","mcp_status"],"type":["object","null"]},"products":{"type":"object","properties":{"n":{"type":"integer","description":"Apps listed in more than one store"},"top":{"type":"array","items":{"type":"string"},"description":"The first names, most stores first"}},"required":["n","top"]}},"required":["chatgpt","claude","products"],"description":"Headline numbers for the Stats pages"}},"required":["stores","mcp"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"]},"McpToolsetGet":{"type":"object","properties":{"data":{"type":"object","properties":{"servers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"The server's OpenApps id: /v1/mcp/servers/{id}"},"url":{"type":"string"},"page":{"description":"The OpenApps page of the first app that links this server; null when none does","type":["string","null"]},"status":{"type":["string","null"]},"transport":{"type":["string","null"]},"checked_at":{"type":["string","null"]},"apps":{"type":"array","items":{"type":"string"},"description":"Refs of the apps that link to it, across stores"},"snapshot":{"description":"The toolset at `at` (latest if omitted); null if never seen without sign-in by then","properties":{"hash":{"type":"string"},"server_name":{"type":["string","null"]},"server_version":{"type":["string","null"]},"protocol_version":{"type":["string","null"]},"seen_since":{"type":"string","description":"When this toolset first appeared"},"seen_until":{"type":"string","description":"When it last appeared"},"tool_count":{"type":"integer"},"prompt_count":{"type":"integer"},"resource_count":{"type":"integer"},"tools":{"description":"Left out when diff_from is given","type":"array","items":{"$ref":"#/components/schemas/McpTool"}}},"required":["hash","server_name","server_version","protocol_version","seen_since","seen_until","tool_count","prompt_count","resource_count"],"type":["object","null"]},"diff":{"description":"Only with diff_from","properties":{"from":{"description":"In force at diff_from, else the earliest one (see notes)","properties":{"hash":{"type":"string"},"seen_since":{"type":"string"}},"required":["hash","seen_since"],"type":["object","null"]},"added":{"type":"array","items":{"$ref":"#/components/schemas/McpTool"}},"removed":{"type":"array","items":{"$ref":"#/components/schemas/McpTool"}},"changed":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"fields":{"type":"array","items":{"type":"string"},"description":"title, description, inputSchema, annotations or outputSchema"},"before":{"type":"object","additionalProperties":{}},"after":{"type":"object","additionalProperties":{}}},"required":["name","fields"]}}},"required":["from","added","removed","changed"],"type":["object","null"]},"history":{"type":"array","items":{"$ref":"#/components/schemas/ToolsetVersion"}}},"required":["id","url","page","status","transport","checked_at","apps","snapshot","diff"]}}},"required":["servers"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"]},"McpServersList":{"type":"object","properties":{"data":{"type":"object","properties":{"total":{"type":"integer"},"rows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"url":{"type":"string"},"page":{"description":"The OpenApps page of the first app that links this server; null when none does","type":["string","null"]},"host":{"type":["string","null"]},"status":{"type":["string","null"]},"transport":{"type":["string","null"]},"auth_hint":{"type":["string","null"]},"checked_at":{"type":["string","null"]},"tool_count":{"description":"Tools in its latest toolset; null if never seen without sign-in","type":["integer","null"]},"snapshots":{"type":"integer","description":"Toolset versions seen"},"stores":{"type":"array","items":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]}},"apps":{"type":"array","items":{"type":"object","properties":{"app":{"type":"string"},"name":{"type":["string","null"]},"url":{"type":"string"}},"required":["app","name","url"]}}},"required":["id","url","page","host","status","transport","auth_hint","checked_at","tool_count","snapshots","stores","apps"]}}},"required":["total","rows"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"]},"McpServersGet":{"type":"object","properties":{"data":{"type":"object","properties":{"server":{"type":"object","properties":{"id":{"type":"integer"},"url":{"type":"string"},"page":{"description":"The OpenApps page of the first app that links this server; null when none does","type":["string","null"]},"host":{"type":["string","null"]},"status":{"type":["string","null"]},"transport":{"type":["string","null"]},"auth_hint":{"type":["string","null"]},"checked_at":{"type":["string","null"]},"error":{"description":"The last check's error","type":["string","null"]}},"required":["id","url","page","host","status","transport","auth_hint","checked_at","error"]},"apps":{"type":"array","items":{"$ref":"#/components/schemas/AppRow"}},"toolset":{"description":"Latest toolset; null if never seen without sign-in","properties":{"hash":{"type":"string"},"server_name":{"type":["string","null"]},"server_version":{"type":["string","null"]},"protocol_version":{"type":["string","null"]},"seen_since":{"type":"string","description":"When this toolset first appeared"},"seen_until":{"type":"string","description":"When it last appeared"},"tool_count":{"type":"integer"},"prompt_count":{"type":"integer"},"resource_count":{"type":"integer"},"tools":{"description":"Left out when diff_from is given","type":"array","items":{"$ref":"#/components/schemas/McpTool"}}},"required":["hash","server_name","server_version","protocol_version","seen_since","seen_until","tool_count","prompt_count","resource_count"],"type":["object","null"]},"history":{"type":"array","items":{"$ref":"#/components/schemas/ToolsetVersion"}}},"required":["server","apps","toolset","history"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"]},"ScoresApps":{"type":"object","properties":{"data":{"type":"object","properties":{"method":{"type":"string"},"day":{"description":"The UTC day the figures are for","type":["string","null"]},"total":{"type":"integer"},"rows":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","description":"The app's slug (apps_get)"},"name":{"type":["string","null"]},"icon":{"description":"Its best-ranked listing's icon","type":["string","null"]},"score":{"type":"number","description":"Its score under method"},"tier":{"type":"integer","description":"Best tier of its listings"},"tier_title":{"type":"string"},"momentum":{"description":"Change over one window","type":["number","null"]},"rank":{"type":"integer","description":"Among apps across every store, 1 first"},"listings":{"type":"array","items":{"type":"object","properties":{"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"app":{"type":"string","description":"Listing ref"},"rank":{"type":"integer","description":"The listing's OpenApps Rank in its store"}},"required":["store","app","rank"]},"description":"Its charted listings"}},"required":["slug","name","icon","score","tier","tier_title","momentum","rank","listings"]}}},"required":["method","day","total","rows"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"]},"ScoresList":{"type":"object","properties":{"data":{"type":"object","properties":{"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"method":{"type":"string"},"day":{"description":"The UTC day the figures are for","type":["string","null"]},"total":{"type":"integer"},"rows":{"type":"array","items":{"type":"object","properties":{"app":{"type":"string"},"slug":{"description":"Unique in its store; listings_get takes it","type":["string","null"]},"name":{"type":["string","null"]},"kind":{"type":"string","enum":["app","connector","plugin","desktop_extension","directory_plugin","directory_mcp","bot","unlisted"]},"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"url":{"type":"string"},"short_description":{"type":["string","null"]},"publisher":{"type":["string","null"]},"icon":{"description":"The app's icon on the OpenApps site","type":["string","null"]},"product":{"description":"Same value: same product, within one answer","type":["string","null"]},"score":{"type":"number","description":"Mean daily points over the window: 1/position on each counted chart, weighted"},"rank":{"type":"integer","description":"By score among the store's apps, 1 first"},"tier":{"type":"integer","description":"3: top 10 on a counted chart today, 2: top 50, 1: charted within the window"},"tier_title":{"type":"string"},"days_charted":{"type":"integer"},"peak":{"type":"integer","description":"Best position on a counted chart in the window"},"momentum":{"description":"Score minus the previous window's; null until that window has enough days","type":["number","null"]},"chart_rank":{"description":"Rank by score among the apps on the chart asked for","type":["integer","null"]},"kind_peak":{"type":"integer","description":"peak counted among the listing's own kind on a chart that joins kinds (Claude's Most popular and its tag lists, cursor.directory), as chart pages number it; else peak"}},"required":["app","slug","name","kind","store","url","short_description","score","rank","tier","tier_title","days_charted","peak","momentum","chart_rank","kind_peak"]}}},"required":["store","method","day","total","rows"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"]},"ScoresTag":{"type":"object","properties":{"data":{"type":"object","properties":{"tag":{"type":"object","properties":{"facet":{"type":"string"},"value":{"type":"string"},"title":{"type":"string"}},"required":["facet","value","title"]},"store":{"enum":["chatgpt","claude","cursor","grokbot","perplexity","muse",null],"type":["string","null"]},"method":{"type":"string"},"day":{"description":"The UTC day the figures are for","type":["string","null"]},"total":{"type":"integer"},"rows":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","description":"The app's slug (apps_get)"},"name":{"type":["string","null"]},"icon":{"description":"Its best-ranked listing's icon","type":["string","null"]},"score":{"type":"number","description":"Its score under method"},"tier":{"type":"integer","description":"Best tier of its listings"},"tier_title":{"type":"string"},"momentum":{"description":"Change over one window","type":["number","null"]},"rank":{"type":"integer","description":"Among the apps with the tag"},"listings":{"type":"array","items":{"type":"object","properties":{"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"app":{"type":"string","description":"Listing ref"},"rank":{"type":"integer","description":"The listing's OpenApps Rank in its store"}},"required":["store","app","rank"]},"description":"Its charted listings"},"overall_rank":{"type":"integer","description":"Rank before the tag filter"}},"required":["slug","name","icon","score","tier","tier_title","momentum","rank","listings","overall_rank"]}}},"required":["tag","store","method","day","total","rows"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"]},"ScoresGet":{"type":"object","properties":{"data":{"type":"object","properties":{"app":{"type":"string"},"method":{"type":"string"},"charted":{"type":"boolean"},"day":{"type":["string","null"]},"figures":{"properties":{"score":{"type":"number","description":"Mean daily points over the window: 1/position on each counted chart, weighted"},"rank":{"type":"integer","description":"By score among the store's apps, 1 first"},"tier":{"type":"integer","description":"3: top 10 on a counted chart today, 2: top 50, 1: charted within the window"},"tier_title":{"type":"string"},"days_charted":{"type":"integer"},"peak":{"type":"integer","description":"Best position on a counted chart in the window"},"momentum":{"description":"Score minus the previous window's; null until that window has enough days","type":["number","null"]}},"required":["score","rank","tier","tier_title","days_charted","peak","momentum"],"type":["object","null"]},"chart_ranks":{"type":"array","items":{"type":"object","properties":{"chart":{"type":"string"},"rank":{"type":"integer"}},"required":["chart","rank"]},"description":"Its OpenApps Rank among the apps scored on each chart, not its position in the chart (listings_ranks_current has those)"},"series":{"type":"array","items":{"type":"object","properties":{"day":{"type":"string"},"score":{"type":"number"},"rank":{"type":"integer"}},"required":["day","score","rank"]}}},"required":["app","method","charted","day","figures","chart_ranks"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"]},"ScoresMethods":{"type":"object","properties":{"data":{"type":"object","properties":{"published":{"type":"string"},"methods":{"type":"array","items":{"type":"object","properties":{"method":{"type":"string"},"title":{"type":"string"},"window_days":{"type":"integer"},"published":{"type":"boolean"},"figures":{"type":"object","additionalProperties":{"type":"string"}},"validation":{"type":"array","items":{"type":"object","properties":{"store":{"type":"string","enum":["chatgpt","claude","cursor","grokbot","perplexity","muse"]},"target":{"type":"string"},"day":{"type":"string"},"n":{"type":"integer"},"rho":{"type":["number","null"]},"half":{"type":["number","null"]}},"required":["store","target","day","n","rho","half"]},"description":"Newest check against each published count: Spearman rho, share on the same side of the median"}},"required":["method","title","window_days","published","figures","validation"]}}},"required":["published","methods"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"]}},"responses":{"304":{"description":"Not modified since the ETag in If-None-Match."},"400":{"description":"An input is invalid; error.param names it and error.allowed lists valid values.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid bearer credential.","headers":{"WWW-Authenticate":{"description":"OAuth challenge.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"403":{"description":"error.code plan_required: the caller's plan does not open the input, and error.need names the plan that does (free: an account; plus: Pro). Missing catalog:read scope: error is a string, with an OAuth challenge.","headers":{"WWW-Authenticate":{"description":"OAuth challenge, for a missing scope.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"An Error's error, or a string for a missing scope"}},"required":["error"]}}}},"404":{"description":"Nothing matches, e.g. an unknown app or chart; error.nearest lists the closest known values.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests from this address in the last minute.","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"OpenApps failed; the message carries a reference to quote.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"securitySchemes":{"DeveloperKey":{"type":"http","scheme":"bearer","description":"Create a developer key in your OpenApps account. Public reads also work without credentials."},"OAuth":{"type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://theopenapps.com/oauth/authorize","tokenUrl":"https://theopenapps.com/oauth/token","scopes":{"catalog:read":"Read the OpenApps catalog"}}},"description":"Request resource=https://theopenapps.com/v1 and use PKCE S256."}}}}