DocsSupport

Limits and errors

Request rate limits, the monthly AI usage allowance and every error the GymUp MCP server returns.

Request rate limit

AccountLimit
With a subscription120 requests per minute
Without a subscription30 requests per minute

Every authenticated HTTP request counts, initialize and tools/list included; a 401 does not. The window is a fixed minute that starts at your first request. Past the limit, the server answers HTTP 429 with Retry-After: 60 and the body {"error":"Rate limit exceeded"}. The real wait is the rest of the current minute, so 60 seconds is the longest you need to wait.

AI usage allowance

Each subscription includes a monthly AI usage allowance, shared by the in-app coach and the MCP server. It is a spending cap, not a number of calls. The app shows the share used in Account, then Settings, then Monthly usage. It resets at the start of each billing period.

Two MCP tools depend on it:

  • propose_exercises ranks its options with a model and draws on the allowance. Once it is spent, the tool still answers: the options come from the coach's own ranking, with probability: null.
  • generate_smart_program calls no model and costs nothing, but it stops once the allowance is spent and answers rateLimited until the reset.

Errors

ResponseMeaningWhat to do
HTTP 401, JSON-RPC error -32000No valid access tokenReconnect the server; see Authentication.
HTTP 429, {"error":"Rate limit exceeded"}Request rate limit reachedWait for the next minute.
{ success: false, requiresSubscription: true, message }The account has no active subscriptionSubscribe in the app, or sign in with the account that has one.
{ success: false, rateLimited: true, message }generate_smart_program after the monthly allowance is spentThe message gives the reset date.
{ success: false, error_code, message }The tool refused the call: unknown id, invalid date, an exercise not on that day, a later change in the wayRead error_code and suggested_tool. A refused call writes nothing.
Tool result with isError: trueUnexpected server errorRetry; if it persists, contact support.

Tool-level responses arrive as a normal tool result whose text is the JSON object above.

On this page