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
89%
Naming quality
93%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,037Tokens (tool definitions)
~3.4 KBTypical response size
Moderate attention impact (0.81% 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 (3)

🟢 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. Returns a token for updating it later.

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"
    }
  },
  "required": [
    "store",
    "submitted_on",
    "status"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "token": {
      "type": "string",
      "description": "Private token for update_submission"
    },
    "update_url": {
      "type": "string",
      "description": "Private page to update or delete the report"
    },
    "error": {
      "type": "string"
    }
  }
}
🟡update_submission(token, status, decided_on)

Mark a previously reported submission as still waiting, approved, rejected or withdrawn, using its token.

Input Schema

{
  "type": "object",
  "properties": {
    "token": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "enum": [
        "waiting",
        "approved",
        "rejected",
        "withdrawn"
      ]
    },
    "decided_on": {
      "type": "string",
      "description": "YYYY-MM-DD"
    }
  },
  "required": [
    "token",
    "status"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean"
    },
    "status": {
      "type": "string",
      "enum": [
        "waiting",
        "approved",
        "rejected",
        "withdrawn"
      ]
    },
    "error": {
      "type": "string"
    }
  }
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded3 tools