> For the complete documentation index, see [llms.txt](https://mcp-docs.nichefire.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mcp-docs.nichefire.com/errors-and-limits/rate-limits.md).

# Rate Limits

A rate limit caps **how fast** you can call Nichefire MCP. It is separate from your quota, which caps **how much** calls you can run in total.

The two are easy to confuse, so it is worth stating plainly:

|               | Rate limit                  | Quota                          |
| ------------- | --------------------------- | ------------------------------ |
| Limits        | Calls per minute            | Total searches                 |
| Resets        | Automatically, every minute | Does not reset on its own      |
| Applies to    | Every tool                  | Only Firesearch research tools |
| When exceeded | Wait and retry              | Requires a top-up              |

### How it works

* **Window.** Limits are enforced over a rolling **60-second window**. Once the window passes, your full allowance is available again.
* **Scope.** Your limit is tied to your organization's credential — everyone using it draws on the same allowance.
* **Independent buckets.** Firesearch and Trend Insights are limited **separately**. Hitting the Firesearch limit does not stop you from reading your saved trend data, and vice versa.
* **No queueing.** A call over the limit is rejected immediately rather than held and retried for you. Your client decides what to do next.

### Per-tool behavior

| Tool                                                            | Rate-limit bucket | Notes                                         |
| --------------------------------------------------------------- | ----------------- | --------------------------------------------- |
| [`execute_search`](/tools/firesearch/execute-search.md)         | Firesearch        | Consumes quota.                               |
| [`analyze_trend`](/tools/firesearch/analyze-trends.md)          | Firesearch        | Consumes quota.                               |
| [`list_trend_topics`](/tools/insights-api/list-trend-topics.md) | Trend Insights    | Quota-free.                                   |
| [`get_trend_topic`](/tools/insights-api/get-trend-topic.md)     | Trend Insights    | Quota-free.                                   |
| [`list_trends`](/tools/insights-api/list-trends.md)             | Trend Insights    | Quota-free.                                   |
| [`get_trend`](/tools/insights-api/get-trend.md)                 | Trend Insights    | Quota-free.                                   |
| [`get_usage`](/tools/get-usage.md)                              | None              | Free to call. Never counts against any limit. |

Because [`get_usage`](/tools/get-usage.md) is exempt, you can always check your standing, even while rate-limited.

### Checking your limit

Ask your assistant to check usage, or call [`get_usage`](/tools/get-usage.md) directly. Each feature reports its own `rate_limit` block:

```json
{
  "usage": {
    "firesearch": {
      "rate_limit": { "limit": 60, "remaining": 58, "reset_at": "2026-07-23T14:05:00Z", "window_seconds": 60 }
    },
    "insights": {
      "rate_limit": { "limit": 50, "remaining": 47, "reset_at": "2026-07-23T14:05:00Z", "window_seconds": 60 }
    }
  }
}
```

| Field            | Meaning                                                    |
| ---------------- | ---------------------------------------------------------- |
| `limit`          | Calls allowed per window.                                  |
| `remaining`      | Calls left in the current window.                          |
| `reset_at`       | When the window resets and `remaining` returns to `limit`. |
| `window_seconds` | Length of the window — 60 seconds.                         |

`reset_at` may be `null` when no window is currently open, which simply means you have not made a call recently and your full allowance is available.

### When you exceed it

The call fails with **HTTP 429** and this body:

```json
{ "error": "Rate limit exceeded", "reason": "rate_limit_exceeded" }
```

Inside an AI client you will see the message *Rate limit exceeded* reported as a failed tool call. The `reason` field is what distinguishes this from running out of quota — see [Errors](/errors-and-limits/errors.md) for how to tell them apart.

**What to do:** wait for the window to reset — at most a minute — and retry. Nothing is consumed by a rejected call.

### Avoiding it

* **Do not fan out blindly.** Running many searches in parallel is the most common way to hit the limit. It also spends quota; see [`execute_search`](/tools/firesearch/execute-search.md).
* **Space out bulk reads.** When paging through Trend Insights, page in sequence rather than requesting every page at once.
* **Remember it is shared.** A colleague's batch job draws on the same allowance as your conversation.

If your workload consistently needs more headroom, contact your Nichefire representative — limits are configured per organization and can be raised.
