# Errors

A tool error returns `isError: true` with the error as JSON in its text: `{"error": {...}}` with a `code`, a `message`, a `hint`, sometimes `candidates` or `retry_after_seconds`, and a `docs_url` to the section below. (The REST API returns the same object as the response body.)

## INVALID_INPUT
A value is missing or not valid. The message starts with the field to fix.

## NOT_FOUND
The object does not exist, or this key cannot see it. Search again: ids can change when mail moves.

## AMBIGUOUS_ACCOUNT
A write without account_id while several accounts could do it. Read the candidates, choose one (or ask the user) and retry with account_id.

## ACCOUNT_NOT_PERMITTED
The account is outside this key's reach (its account scope).

## SCOPE_NOT_GRANTED
The key lacks the scope the tool needs; the message names it. The workspace owner can issue a key with it.

## ACCOUNT_NEEDS_REAUTH
The owner must reconnect the account in Prubex. Tell the user; the error carries the link for them.

## ACCOUNT_PAUSED
Someone paused the account, a person in Prubex or an agent with accounts_pause; agents cannot reach it until it is resumed.

## ACCOUNT_SUSPENDED
The workspace's plan does not cover this account right now.

## PROVIDER_UNSUPPORTED
This provider cannot do this; the message explains what it can do instead.

## PROVIDER_ERROR
The provider failed. Try again shortly; if it persists, the request id helps support.

## PROVIDER_RATE_LIMITED
The provider asked Prubex to slow down; wait retry_after_seconds.

## RECIPIENT_BLOCKED
The account's policy blocks one or more recipients; every offending address is listed.

## RECIPIENT_NOT_ALLOWED
The account only sends to an allowlist, and these recipients are not on it.

## SEND_BLOCKED
The account's policy blocks sending by agents.

## SEND_LIMIT_REACHED
The account reached its daily send cap (20 in a new workspace's first 24 hours), which resets at 00:00 UTC. In those first 24 hours each message or invitation also reaches at most 10 people.

## POLICY_DENIED
The account's policy forbids this for agents, such as moving mail to Trash or changing folders, or a person paused the account and only a person can resume it. On Microsoft accounts it also answers an edit to a message Prubex is sending at that moment (a large send through a draft); that one clears when the send ends.

## ATTACHMENT_TOO_LARGE
Over a limit: inline files are at most 3 MB in all; uploaded files together at most the account's own limit (see Sending).

## PLAN_LIMIT
The workspace's plan does not allow this yet.

## RATE_LIMITED
Too many requests for the workspace's rate tier; wait retry_after_seconds.

## GOOGLE_EARLY_ACCESS_FULL
Google limits how many people can connect until it verifies Prubex, and the places are taken. The person can join the Gmail list in Prubex; we email them when places open.

