Limits and errors
What each plan allows in accounts, seats and calls, when the allowance period starts, what counts against it, and what every refusal message means.
30 rows
Plans are priced on how much you connect, not on how much you ask. Every paid plan has unlimited tool calls; what grows with the plan is the number of ad accounts you can expose and the number of people who can reach them.
Plans
| Plan | Ad accounts | Seats | Tool calls | Writes | Active alerts |
|---|---|---|---|---|---|
| Free | 1 | 1 | 200 per period | No | 0 |
| Pro | 4 | 1 | Unlimited | Yes | 0 |
| Team | 12 | 5 | Unlimited | Yes | 25 |
| Enterprise | Unlimited | 5 | Unlimited | Yes | Unlimited |
The two capabilities that are not quantitiesLink to this section
Client memory covers the shared client fiche, the client journal and the client rules checked on writes. Creatives covers the creative gallery, its performance cards and its daily trends. Saved work covers saved views, client briefs, shareable creative reviews and business reviews. All three are enforced server side, on the tool name, before any advertising API is touched, and run_tool does not get around them. A call refused this way is not counted.
| Plan | Client memory | Creatives | Saved work |
|---|---|---|---|
| Free | No | No | No |
| Pro | No | No | No |
| Team | Yes | Yes | No |
| Enterprise | Yes | Yes | Yes |
When the period startsLink to this section
The allowance runs from the day you signed up to the same day the following month, not from the first of the calendar month. Sign up on the 28th and your period ends on the 28th. Where a month is too short, as with the 31st in February, it ends on the last day of that month, and the original day comes back the month after.
What countsLink to this section
- On the Free plan only. Paid plans do not count calls at all.
- One tool call is one unit, whether it reads one row or ten thousand.
- A call routed through
run_toolcounts once, not twice. list_accounts,search_toolsanddescribe_tooldo not count.- A refused call does not count. Being over quota, or asking for an account you did not tick, costs nothing.
Refusal codesLink to this section
Every refusal carries two content blocks: a sentence for the person reading the chat, and a JSON block for the agent, with a stable code, whether retrying can help, whether a human is needed, and the next action. The codes are a public contract: they are deprecated, never renamed.
| Code | Retry helps | Human needed | Meaning |
|---|---|---|---|
UNKNOWN_TOOL | No | No | The name matches nothing. search_tools finds the right one. |
UNKNOWN_SKILL | No | No | The slug matches nothing. search_skills finds the right one. |
ACCOUNT_ | No | No | The account was not ticked. list_accounts shows what is. |
NO_ | No | Yes | The platform is connected but nothing is exposed yet. |
PLATFORM_ | No | Yes | No active connection for that platform. |
WRITE_ | No | Yes | The tool exists; the plan has no writes. |
PLAN_REQUIRED | No | Yes | A whole capability is closed by the plan. Reading instead of writing does not get around it. |
OVER_CAPACITY | No | Yes | More accounts ticked than the plan covers. Nothing is readable until somebody unticks. |
CALL_ | No | Yes | The Free plan allowance is spent for this period. |
RATE_LIMITED | Yes | No | A platform ceiling would be crossed; the message names the delay. |
TOOL_ | Yes | No | Dedicated URL for another source; the message names the right one. |
DATABASE_ | Yes | No | Transient. Nothing was changed on any ad account. |
PLATFORM_ERROR | Yes | No | The advertising platform itself refused; its message is quoted. |
CLIENT_RULE | No | Yes | The change breaks a rule of the shared client fiche. Nothing was changed; an exception needs the person's explicit approval and a reason. |
BAD_ARGUMENTS | No | No | The call is malformed; the message names the missing piece. |
Reading a refusalLink to this section
A refusal says which check failed and what would fix it. It is meant to be actionable by the agent without asking a human, except where only a human can act.
| Refusal | What it means | What to do |
|---|---|---|
not among the . | The account was not ticked in the dashboard. | Call list_accounts, use one of those. Only the account owner can add more. |
No . | The platform is connected but nothing is exposed. | Hand back to the account owner. |
| Write refused on the current plan | The tool exists but the plan has no writes. | Read tools still work. Upgrading is a human decision. |
. | A creative or saved-work tool was called on a plan that does not open it. | The message names the plan that opens it and what it contains. Hand the decision to the account owner; it is a plan change, not a setting. |
. | The plan went down while the selection stayed where it was. | Everything is refused until somebody unticks. We do not choose which accounts survive, because picking on your behalf could expose one client's account to another client's assistant. |
| Call allowance reached | The Free plan quota is spent. | It resets on the sign-up day of the month. Paid plans have no call limit. |
| Tool not available on this endpoint | A dedicated per-source URL was used for another platform's tool. | The message names the URL that serves it. |