OpenApps

Rankings, launches and featuring across the ChatGPT, Claude, Cursor and Grok Bot app stores.

我該用這個嗎

品質與安全性

A
說明品質
98%
結構描述完整度
89%
命名品質
86%
汙染風險
80%
權限相符程度
90%
協定合規性
100%

發現項目(4)

  • HIGHTool poisoning patterns detected
  • LOWTool 'market_get' description lacks action verb在 market_get 中
  • LOWTool description contains role marker that could confuse chat models在 feedback_send 中
  • LOWTool 'fetch' suggests web access but openWorldHint=false在 fetch 中

根據工具定義與協定合規性的自動化分析。

上下文成本

~2,895Token(工具定義)
~1.5 KB典型回應大小
顯著的注意力影響(128k 上下文的 2.26%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

{
  "mcpServers": {
    "openapps": {
      "url": "https://theopenapps.com/mcp"
    }
  }
}

遠端端點

https://theopenapps.com/mcpstreamable-http

它能做什麼

工具清單

工具(14)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
🟢changes_list(store, region, since, apps, types, ...)

Use this when the user asks what changed in a store: chart moves, featuring, launches, delistings, metric moves or MCP changes, newest first with counts per type. Do not use for a chart's full current order; use charts_get.

輸入結構描述

{
  "type": "object",
  "properties": {
    "store": {
      "type": "string",
      "enum": [
        "chatgpt",
        "claude",
        "cursor",
        "grokbot"
      ]
    },
    "region": {
      "type": "string",
      "description": "ChatGPT country code (default us)."
    },
    "since": {
      "default": "-24h",
      "type": "string",
      "description": "Window start: ISO-8601 or -24h, -7d."
    },
    "apps": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Listing refs or OpenApps URLs."
    },
    "types": {
      "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"
        ]
      },
      "description": "Default: all but release_change."
    },
    "limit": {
      "type": "integer"
    },
    "cursor": {
      "type": "string"
    },
    "response_format": {
      "type": "string",
      "enum": [
        "concise",
        "detailed"
      ]
    },
    "context": {
      "type": "string",
      "description": "The user's goal, briefly."
    }
  },
  "required": [
    "store"
  ]
}
🟢new_list(store, since, sort, limit, cursor, ...)

Use this when the user asks which apps are new in a store since a time, by launch date or else the day each went live. Do not use for rank or toolset changes; use changes_list.

輸入結構描述

{
  "type": "object",
  "properties": {
    "store": {
      "type": "string",
      "enum": [
        "chatgpt",
        "claude",
        "cursor",
        "grokbot"
      ]
    },
    "since": {
      "default": "-24h",
      "type": "string",
      "description": "Window start: ISO-8601 or -24h, -7d."
    },
    "sort": {
      "default": "released_at",
      "type": "string",
      "enum": [
        "released_at",
        "first_seen_at"
      ]
    },
    "limit": {
      "type": "integer"
    },
    "cursor": {
      "type": "string"
    },
    "category": {
      "type": "string",
      "description": "Category title (ChatGPT)."
    },
    "kinds": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "e.g. claude:connector; stores_get lists them."
    },
    "response_format": {
      "type": "string",
      "enum": [
        "concise",
        "detailed"
      ]
    },
    "context": {
      "type": "string",
      "description": "The user's goal, briefly."
    }
  },
  "required": [
    "store"
  ]
}
🟢stores_get(store, guide, response_format, context)

Use this when you need stores, app counts, countries, freshness, charts or metrics. Pass store for chart names. guide returns a playbook's steps: weekly_brief (a store's week), competitor_watch (compare apps), audit_my_server (an MCP server's tools). Do not use for rankings; use charts_get.

輸入結構描述

{
  "type": "object",
  "properties": {
    "store": {
      "type": "string",
      "enum": [
        "chatgpt",
        "claude",
        "cursor",
        "grokbot"
      ]
    },
    "guide": {
      "type": "string",
      "enum": [
        "weekly_brief",
        "competitor_watch",
        "audit_my_server"
      ]
    },
    "response_format": {
      "type": "string",
      "enum": [
        "concise",
        "detailed"
      ]
    },
    "context": {
      "type": "string",
      "description": "The user's goal, briefly."
    }
  }
}
🟢charts_get(store, chart, region, at, kinds, ...)

Use this when you need a chart now or at a past time, with movement and 1-based positions. Do not use for a listing across charts; use listings_profile.

輸入結構描述

{
  "type": "object",
  "properties": {
    "store": {
      "type": "string",
      "enum": [
        "chatgpt",
        "claude",
        "cursor",
        "grokbot"
      ]
    },
    "chart": {
      "type": "string",
      "description": "Chart name; stores_get lists them."
    },
    "region": {
      "type": "string",
      "description": "ChatGPT country code (default us)."
    },
    "at": {
      "type": "string",
      "description": "Past time: ISO-8601 or -24h, -7d."
    },
    "kinds": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "e.g. claude:connector; stores_get lists them."
    },
    "limit": {
      "type": "integer"
    },
    "cursor": {
      "type": "string"
    },
    "response_format": {
      "type": "string",
      "enum": [
        "concise",
        "detailed"
      ]
    },
    "context": {
      "type": "string",
      "description": "The user's goal, briefly."
    }
  },
  "required": [
    "store",
    "chart"
  ]
}
🟢leaderboards_get(store, metric, kinds, limit, cursor, ...)

Use this when the user asks which apps lead a store by a published number. claude: installs, popularity_score, trending_score, gh_stars; cursor: dir_installs, dir_stars. Do not use for chart positions; use charts_get.

輸入結構描述

{
  "type": "object",
  "properties": {
    "store": {
      "type": "string",
      "enum": [
        "chatgpt",
        "claude",
        "cursor",
        "grokbot"
      ]
    },
    "metric": {
      "type": "string",
      "description": "Metric name; stores_get lists each store's."
    },
    "kinds": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "e.g. claude:connector; stores_get lists them."
    },
    "limit": {
      "type": "integer"
    },
    "cursor": {
      "type": "string"
    },
    "response_format": {
      "type": "string",
      "enum": [
        "concise",
        "detailed"
      ]
    },
    "context": {
      "type": "string",
      "description": "The user's goal, briefly."
    }
  },
  "required": [
    "store",
    "metric"
  ]
}
🟢scores_list(store, chart, limit, cursor, response_format, ...)

Use this when the user asks which apps are popular in a store over the last month: OpenApps Rank, a 28-day aggregate of its popularity charts, with tier and momentum. Do not use for one day's chart order (charts_get) or published counts (leaderboards_get).

輸入結構描述

{
  "type": "object",
  "properties": {
    "store": {
      "type": "string",
      "enum": [
        "chatgpt",
        "claude",
        "cursor",
        "grokbot"
      ]
    },
    "chart": {
      "type": "string",
      "description": "Chart name; stores_get lists them."
    },
    "limit": {
      "type": "integer"
    },
    "cursor": {
      "type": "string"
    },
    "response_format": {
      "type": "string",
      "enum": [
        "concise",
        "detailed"
      ]
    },
    "context": {
      "type": "string",
      "description": "The user's goal, briefly."
    }
  },
  "required": [
    "store"
  ]
}
🟢listings_search(query, publisher, store, kind, limit, ...)

Use this when you need an app's ref from its name, its publisher, a brand it works with or what it does ("create jira ticket"); one row per app, best match first. Do not use for popularity or rankings; use charts_get.

輸入結構描述

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Words in app names, descriptions or publishers."
    },
    "publisher": {
      "type": "string",
      "description": "Publisher name, in any form."
    },
    "store": {
      "type": "string",
      "enum": [
        "chatgpt",
        "claude",
        "cursor",
        "grokbot"
      ]
    },
    "kind": {
      "type": "string",
      "enum": [
        "app",
        "connector",
        "plugin",
        "desktop_extension",
        "directory_rule",
        "directory_mcp"
      ]
    },
    "limit": {
      "type": "integer"
    },
    "cursor": {
      "type": "string"
    },
    "response_format": {
      "type": "string",
      "enum": [
        "concise",
        "detailed"
      ]
    },
    "context": {
      "type": "string",
      "description": "The user's goal, briefly."
    }
  },
  "required": [
    "query"
  ]
}
🟢featuring_history(store, app, chart, region, since, ...)

Use this when you need when and where apps were featured, per app or home shelf, over at most 30 days. Do not use for current shelf order; use charts_get.

輸入結構描述

{
  "type": "object",
  "properties": {
    "store": {
      "type": "string",
      "enum": [
        "chatgpt",
        "claude",
        "cursor",
        "grokbot"
      ]
    },
    "app": {
      "type": "string",
      "description": "Listing ref or OpenApps URL."
    },
    "chart": {
      "type": "string",
      "description": "Chart name; stores_get lists them."
    },
    "region": {
      "type": "string",
      "description": "ChatGPT country code (default us)."
    },
    "since": {
      "default": "-24h",
      "type": "string",
      "description": "Window start: ISO-8601 or -24h, -7d."
    },
    "at": {
      "type": "string",
      "description": "Past time: ISO-8601 or -24h, -7d."
    },
    "limit": {
      "type": "integer"
    },
    "cursor": {
      "type": "string"
    },
    "response_format": {
      "type": "string",
      "enum": [
        "concise",
        "detailed"
      ]
    },
    "context": {
      "type": "string",
      "description": "The user's goal, briefly."
    }
  },
  "required": [
    "store"
  ]
}
🟢listings_profile(apps, include, response_format, context)

Use this when you need a listing profile, or up to 5 (Pro): its app, country availability, ranks, metrics and MCP tools. Stale or refused countries read unknown. Do not use for discovery; use listings_search.

輸入結構描述

{
  "type": "object",
  "properties": {
    "apps": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Listing refs or OpenApps URLs."
    },
    "include": {
      "default": [
        "ranks",
        "metrics",
        "tools"
      ],
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "ranks",
          "metrics",
          "tools"
        ]
      },
      "description": "Sections per profile."
    },
    "response_format": {
      "type": "string",
      "enum": [
        "concise",
        "detailed"
      ]
    },
    "context": {
      "type": "string",
      "description": "The user's goal, briefly."
    }
  },
  "required": [
    "apps"
  ]
}
🟢mcp_toolset_get(app, server, at, diff_from, response_format, ...)

Use this when you need a tracked app or server's stored MCP tools or changes. at selects a past snapshot; diff_from compares versions. Do not use for arbitrary URLs; only tracked servers.

輸入結構描述

{
  "type": "object",
  "properties": {
    "app": {
      "type": "string",
      "description": "Listing ref or OpenApps URL."
    },
    "server": {
      "type": "string",
      "description": "MCP server URL."
    },
    "at": {
      "type": "string",
      "description": "Past time: ISO-8601 or -24h, -7d."
    },
    "diff_from": {
      "type": "string",
      "description": "Earlier toolset: snapshot hash or time."
    },
    "response_format": {
      "type": "string",
      "enum": [
        "concise",
        "detailed"
      ]
    },
    "context": {
      "type": "string",
      "description": "The user's goal, briefly."
    }
  }
}
🟢market_get(store, response_format, context)

Use this when you need store sizes, weekly launches, app kinds or MCP ecosystem statistics. Do not use for app profiles or rankings.

輸入結構描述

{
  "type": "object",
  "properties": {
    "store": {
      "type": "string",
      "enum": [
        "chatgpt",
        "claude",
        "cursor",
        "grokbot"
      ]
    },
    "response_format": {
      "type": "string",
      "enum": [
        "concise",
        "detailed"
      ]
    },
    "context": {
      "type": "string",
      "description": "The user's goal, briefly."
    }
  }
}
🟢search(query)

Use this when ChatGPT deep research needs listings, apps, tags (query tag:<id>), charts or tracked MCP URLs. Returns typed ids for fetch. Do not use for rankings or events; use charts_get or changes_list.

輸入結構描述

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Words in app names, descriptions or publishers."
    }
  },
  "required": [
    "query"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "results": {
      "type": "array",
      "items": {
        "type": "object"
      }
    }
  }
}
🟢fetch(id)

Use this when ChatGPT deep research needs a document for an id returned by search: listing, app, tag, chart or MCP toolset. Do not use for ids outside search results.

輸入結構描述

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "A search result id: listing:{store}:{plugin_id}, app:{slug}, tag:{id}, chart:{store}:{chart} or server:{url}."
    }
  },
  "required": [
    "id"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "text": {
      "type": "string"
    },
    "url": {
      "type": "string"
    },
    "metadata": {
      "type": "object"
    }
  }
}
🟡feedback_send(issue, summary, initiator, details, tool, ...)

Use this when OpenApps' tools or data fail the user: an error, data the user says is wrong (such as an app bound to the wrong listing), a missing capability, or something confusing. Ask the user before sending a report they did not ask for. It is stored privately with the caller's account and client; no reply comes in this conversation. Summarize; never include secrets or personal data. Do not use for other servers or the client app; it does not finish the user's task.

輸入結構描述

{
  "type": "object",
  "properties": {
    "issue": {
      "type": "string",
      "enum": [
        "bug",
        "wrong_data",
        "missing_capability",
        "confusing",
        "other"
      ]
    },
    "summary": {
      "type": "string",
      "description": "One line."
    },
    "initiator": {
      "type": "string",
      "enum": [
        "user",
        "model"
      ],
      "description": "user if the user asked for it, else model."
    },
    "details": {
      "type": "string"
    },
    "tool": {
      "type": "string"
    },
    "subject_type": {
      "type": "string",
      "enum": [
        "app",
        "listing",
        "binding",
        "publisher",
        "tag",
        "chart",
        "server"
      ]
    },
    "subject_id": {
      "type": "string",
      "description": "Ref, slug or URL."
    },
    "request_id": {
      "type": "string",
      "description": "From an error answer."
    }
  },
  "required": [
    "issue",
    "summary",
    "initiator"
  ]
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本14 個工具