Scrubby

Rate Limits & Quotas

How Scrubby protects the API from accidental overload, and the per-plan quotas on indexing, MCP calls, and PR reviews.

Scrubby applies rate limits and per-plan quotas to keep the system responsive for everyone. Most users never hit them. This page is reference for when you do.

Rate limits

Rate limits are short-window protections against accidental loops. They apply per-token (or per-user when calling the dashboard).

SurfaceLimit
MCP tool calls60 per minute per session
/v1/repositories/* reads (GET)120 per minute
/v1/repositories/*/analyze* writes30 per minute
/v1/repositories/*/index_repo5 per hour per repo
/v1/account/*60 per minute

A request that exceeds a limit returns 429 Too Many Requests with a Retry-After header. Back off based on the header value (in seconds) before retrying.

Quotas

Quotas are longer-window allotments that depend on your plan.

QuotaProTeamEnterprise
Indexed repositoriesUnlimitedUnlimitedUnlimited
Repository re-index frequencyOnce / minute / repoOnce / minute / repoConfigurable
MCP-driven analyses per monthGenerous fair-use capGenerous fair-use capCustom
GitHub PR reviewsUnlimited on indexed reposUnlimited on indexed reposUnlimited
Stored history depth100 most-recent commits100 most-recent commitsCustom (longer with deep-history backfill)

Pro and Team have a generous fair-use limit on cloud analysis volume to protect against runaway loops; legitimate usage rarely approaches it. Enterprise plans are sized to your workload.

Index limits

Re-indexing a repository is rate-limited to once per minute per repo. This applies to both incremental and full re-indexes.

The first full index is the heavy one (LLM-driven domain classification, segment discovery, convention extraction); subsequent incremental indexes only re-process changed files and skip reclassification unless dependency files changed or 20+ new files were added.

What happens when you hit a limit

  • Rate limit (429). Request returns immediately. Back off based on Retry-After. Your editor’s MCP client should handle this transparently in most cases.
  • Quota exhausted. Request returns 402 Payment Required with a body explaining which quota and how to upgrade. PR reviews on a quota-exhausted account post a status check noting the issue rather than failing silently.

Best practices

  • Cache results in your AI editor’s session when sensible — don’t re-call scrubby_get_domains every prompt.
  • Use incremental indexing (incremental: true) for routine refreshes; reserve full re-indexes for after significant restructures.
  • Don’t poll the index status more than once every 5 seconds; the indexing job emits notifications when it completes.

Last updated