Skip to content

This is the staging environment's documentation. It is a draft and may change at any time.

Limits and errors

An assistant should read these limits from the errors it gets rather than hard-code them, because plans and their numbers can change.

MCP use is counted in prompts for each organization, not in tool calls. One question to an assistant may make several tool calls, and they count as one prompt.

  • A prompt is up to 25 tool calls with no gap of more than 2 minutes between them. The next call after either limit starts a new prompt.
  • Your organization’s plan sets how many prompts it has per day and per month. A day and a month are the calendar day and month in UTC. The plan is one of free, small, medium, or large.
  • A call that starts a new prompt when the organization has none left is refused. Calls inside a prompt that has already started are not.

These prompt quotas are separate from the API request quotas on Rate limits, which apply to programs that call the API directly.

A person may make up to 30 tool calls a minute through one client, whatever the plan. A person may also have a limited number of calls running at once. A call that waits more than a few seconds for its turn is refused with Too many Fedwright requests at once; retry.

A tool’s result is at most 64 KiB, counted for each of the two copies the server sends: the JSON in structuredContent and the same JSON as text. The server never cuts a page of results short, since the page’s cursor would then skip what was left out. What it does with a result that is too large depends on the tool:

Tool A result over 64 KiB
search_opportunities, list_new_since Leaves out the hits’ summaries and says so. A page still too large is refused (see below).
search Leaves out otherMatches when the result has them. A page still too large is refused (see below).
get_reference_codes Is refused (see below).
get_notice, get_opportunity Shortens a notice’s description, or an opportunity’s lists of sources, links, and awards, and says so.
get_details Leaves out the record’s source-specific detail and says so.
get_organization, list_my_organizations Returns This result is too large to return., which is a failure on Fedwright’s side.

A refused page names a limit that fits when one does: Call again with limit 7 or lower. When not even one result fits, the refusal says the page is too large even with no results and asks you to narrow the request, so there is no limit to try.

A page has at most 25 items, and 10 by default.

A refused call is a tool execution error, not a protocol error. The call succeeds as a request, and its result has isError: true and a text block that says what happened. This lets the assistant read the message and correct itself or tell you. The server uses a protocol error only for a request the MCP protocol itself rejects, such as an unknown tool.

A refusal because of a prompt or per-minute limit also carries the facts in structuredContent:

{
"isError": true,
"content": [
{
"type": "text",
"text": "Prompt limit reached: 100 of 100 prompts used today for this organization. It resets at 00:00 UTC (2026-11-09T00:00:00Z)."
}
],
"structuredContent": {
"limit": "mcp-prompts-day",
"remaining": 0,
"resetsAt": "2026-11-09T00:00:00Z",
"used": 100
}
}
Field Meaning
limit mcp-prompts-day, mcp-prompts-month, or mcp-tool-calls-minute.
remaining What is left of that limit, never below 0.
resetsAt When the limit starts again, in UTC.
used How much of it is used.

Other tool errors, by their text:

Text starts with Cause
The arguments aren't valid for this tool: The input doesn’t fit the tool’s schema. The text names the parameters at fault.
Approve this MCP client's access The client needs your approval. The text holds the link. See the overview.
This notice was not found. There is no such notice, and likewise for an opportunity, a record, or an organization you can’t read.
This cursor is invalid or expired. Start the search again without a cursor.
Fedwright's rate limit was reached; retry after The API’s own limits were reached. Wait the seconds given, then retry.
Sign in to the Fedwright web app to refresh MFA The operation needs a recent second-factor check. Sign in to the web app.
Fedwright didn't accept this sign-in. The sign-in is no longer valid. Sign in to the client again.
Fedwright could not complete this request. A failure on Fedwright’s side. Retry later.

A request without a valid access token is not a tool error. The server answers it with HTTP 401 and the discovery challenge described in Any MCP client, and the client signs in again.