Review Times

Live review times for AI app stores: ChatGPT, Claude, Muse, Grok, Cursor. Check before you submit.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
91%
Naming quality
90%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~958Tokens (tool definitions)
~4.9 KBTypical response size
Moderate attention impact (0.75% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "review-times": {
      "url": "https://reviewtimes.fyi/mcp"
    }
  }
}

Remote endpoints

https://reviewtimes.fyi/mcpstreamable-http

What it can do

Tool inventory

Tools (2)

🟒 Read-only🟑 WriteπŸ”΄ Deleteβšͺ Unknown
🟒review_times(store)

How long AI app, connector and plugin stores take to review submissions. Omit store for all stores. Returns typical wait (median days to decision), counts, pace and how review works.

Input Schema

{
  "type": "object",
  "properties": {
    "store": {
      "type": "string",
      "description": "Store slug or name: chatgpt, claude-connectors, claude-plugins, muse, grok, clawhub, cursor, copilot, gemini-cli, docker-mcp"
    }
  }
}

Output Schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "vendor": {
      "type": "string"
    },
    "url": {
      "type": "string"
    },
    "verdict": {
      "type": "string",
      "description": "One-line answer to how long review is taking"
    },
    "typical_wait_days": {
      "type": [
        "number",
        "null"
      ],
      "description": "Median days to a decision, counting submissions still waiting"
    },
    "typical_wait_is_lower_bound": {
      "type": "boolean"
    },
    "longest_seen_days": {
      "type": [
        "number",
        "null"
      ]
    },
    "median_to_approval_days": {
      "type": [
        "number",
        "null"
      ]
    },
    "median_to_rejection_days": {
      "type": [
        "number",
        "null"
      ]
    },
    "pace": {
      "type": "string"
    },
    "counts": {
      "type": "object",
      "properties": {
        "total": {
          "type": "number"
        },
        "approved": {
          "type": "number"
        },
        "rejected": {
          "type": "number"
        },
        "waiting": {
          "type": "number"
        },
        "withdrawn": {
          "type": "number"
        }
      }
    },
    "oldest_waiting_days": {
      "type": [
        "number",
        "null"
      ]
    },
    "last_decision": {
      "type": [
        "string",
        "null"
      ]
    },
    "last_approval": {
      "type": [
        "string",
        "null"
      ]
    },
    "how_review_works": {
      "type": "string"
    },
    "submit_url": {
      "type": [
        "string",
        "null"
      ]
    },
    "docs_url": {
      "type": [
        "string",
        "null"
      ]
    },
    "stores": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "vendor": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "verdict": {
            "type": "string",
            "description": "One-line answer to how long review is taking"
          },
          "typical_wait_days": {
            "type": [
              "number",
              "null"
            ],
            "description": "Median days to a decision, counting submissions still waiting"
          },
          "typical_wait_is_lower_bound": {
            "type": "boolean"
          },
          "longest_seen_days": {
            "type": [
              "number",
              "null"
            ]
          },
          "median_to_approval_days": {
            "type": [
              "number",
              "null"
            ]
          },
          "median_to_rejection_days": {
            "type": [
              "number",
              "null"
            ]
          },
          "pace": {
            "type": "string"
          },
          "counts": {
            "type": "object",
            "properties": {
              "total": {
                "type": "number"
              },
              "approved": {
                "type": "number"
              },
              "rejected": {
                "type": "number"
              },
              "waiting": {
                "type": "number"
              },
              "withdrawn": {
                "type": "number"
              }
            }
          },
          "oldest_waiting_days": {
            "type": [
              "number",
              "null"
            ]
          },
          "last_decision": {
            "type": [
              "string",
              "null"
            ]
          },
          "last_approval": {
            "type": [
              "string",
              "null"
            ]
          },
          "how_review_works": {
            "type": "string"
          },
          "submit_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "docs_url": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      }
    },
    "error": {
      "type": "string"
    }
  },
  "description": "One store when store is given, otherwise every store under stores."
}
🟑report_submission(store, submitted_on, status, decided_on, kind, ...)

Add the user's own submission to a store so others can see real wait times. Only call with the user's permission and for a real submission. The private link to update the report later is emailed to the address given, never returned in the conversation.

Input Schema

{
  "type": "object",
  "properties": {
    "store": {
      "type": "string"
    },
    "submitted_on": {
      "type": "string",
      "description": "YYYY-MM-DD"
    },
    "status": {
      "type": "string",
      "enum": [
        "waiting",
        "approved",
        "rejected",
        "withdrawn"
      ]
    },
    "decided_on": {
      "type": "string",
      "description": "YYYY-MM-DD, required unless status is waiting"
    },
    "kind": {
      "type": "string",
      "enum": [
        "new",
        "update",
        "resubmission"
      ]
    },
    "note": {
      "type": "string",
      "description": "Optional public note, max 280 chars"
    },
    "email": {
      "type": "string",
      "description": "Optional. The reporter’s email address; the private update link is sent there. Not stored."
    },
    "listing_ref": {
      "type": "string",
      "description": "Optional, private. Directory link, ChatGPT app id, MCP server URL or repository; the report is marked approved when that listing appears."
    }
  },
  "required": [
    "store",
    "submitted_on",
    "status"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "share_url": {
      "type": "string",
      "description": "Public page for this report"
    },
    "emailed": {
      "type": "boolean",
      "description": "Whether the private update link was emailed"
    },
    "error": {
      "type": "string"
    }
  }
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded2 tools
verifiedversion not recorded3 tools