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.
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 |
|---|---|---|---|---|
| Free | 1 | 1 | 200 per period | No |
| Pro | 5 | 5 | Unlimited | Yes |
| Team | 15 | 15 | Unlimited | Yes |
| Agency | 50 | 50 | Unlimited | 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. |
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. |
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. |
| 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. |