> Mr. Market docs. Source: https://docs.mrmarket.fyi/limits. Every page is listed in https://docs.mrmarket.fyi/llms.txt; append `.md` to any docs URL for its Markdown.

# Limits and errors

How many calls you can make, how big answers can be, and what every error code means.

## Allowances

Limits are per connected app and reset at **midnight UTC**. Ask your assistant to *call about* to see what's left.

| Limit | Amount |
| --- | --- |
| Tool calls per minute | 20 per connection, counted per clock minute |
| Tool calls per day | 300 per connection |
| Analyst estimates (`get_analyst_estimates`) | 4 lookups a day per person, 8 a day across all members |
| Time per tool call | 100 seconds |

Analyst estimates share a small free data allowance, so ask for them once per company. Reported earnings
(`get_market_data` with `dataset=earnings`) don't count against it.

## Answer size

- A tool result stays under about **40 KB** (roughly 10,000 tokens), so it never floods your assistant's context.
- Lists come in pages. Each result has `page.nextOffset`; passing it back as `offset` continues exactly where the last
  page stopped. Filings and transcript search use `nextCursor` instead.
- Long text (filings, earnings calls) comes in windows of up to 15,000 characters.
- If a page still doesn't fit, the result is trimmed, says so in `trimmed`, and moves `nextOffset` back so nothing is
  skipped.

## Other bounds

| | |
| --- | --- |
| Companies per comparison (`compare_companies`, `get_growth_quality`) | 4 |
| Periods per statement (`get_financials`) | 12 |
| Earnings calendar window | 63 days (400 for one ticker), from 120 days ago to 400 days ahead |
| EDGAR full-text search | 100 hits per SEC page, filings since 2001 |

## Error codes

Errors come back as a normal tool result with `isError`, a `code` and a plain message, so your assistant can explain
them.

| Code | Meaning | What to do |
| --- | --- | --- |
| `not_found` | The company, filing or call isn't in the saved data | Check the name with `search_companies` |
| `not_saved` | The company isn't in the saved universe | Nothing to load; the website shows the same |
| `ambiguous` | Several issuers share that ticker | Retry with the CIK the message lists |
| `invalid_input` | An argument is missing or wrong | Fix it and retry |
| `rate_limited` | Too many calls this minute or today | Wait `retryAfterSeconds` |
| `daily_allowance_used` | Today's analyst-estimate lookups are used | Try after midnight UTC |
| `source_unavailable` | The upstream source is down or has no data | Try later; nothing was invented |
| `source_rate_limited` | The upstream provider is rate limiting | Try in a minute |
| `timeout` | The source took too long | Ask for less, or retry |
| `result_too_large` | Too big even after trimming | Ask for fewer rows or periods |
| `access_revoked` | This connection was disconnected | Connect again |
| `service_unavailable` | The research server is briefly offline | Try again in a few minutes |

## HTTP responses

| Status | Meaning |
| --- | --- |
| `401` | No sign-in, or it expired or was disconnected. Your app should offer to sign in again. |
| `503` | The research server is briefly offline. Retry after the `Retry-After` seconds; your sign-in is still valid. |
