Limits and cost
A connected AI app costs you nothing extra in Chartnaut: it runs inside the plan you already have. The AI itself runs on your plan with Claude, ChatGPT, Cursor or Codex, never on Chartnaut's AI credits. What the app uses on Chartnaut's side is API requests, and runs.
Plan
MCP needs Starter or above, like the CLI and the API. On Free, Allow on the consent page is refused, and an app connected before a move to Free gets 403 plan_limit on every request, even opening a session. It works again within a minute of upgrading. Plans
Where the numbers come from
Each tool call is served as one or more ordinary API requests, made as you. They draw on the same limits as the CLI and your API keys, per account, so a connected app, the CLI and your own code all share one budget:
Limit | What counts | Past it |
|---|---|---|
Every API request a tool makes | The tool returns | |
Validating, saving, starting a run, running a definition over history | The tool returns | |
A tool waiting for a run to finish | Nothing fails: the tool answers at once with the run as it is | |
Runs executing, shared with the app and the Agent | The run waits in |
API limits has each plan's numbers. Starter allows 120 requests a minute and 2 heavy calls at once.
What costs nothing
Connecting, and the sign-in itself.
Opening a session, listing the tools, prompts and resources, and fetching a prompt. None of these makes an API request.
A tool call refused before it reaches the API, such as a malformed run id or a missing
kind. The tool checks its own inputs first.
What each tool costs
Tool | API requests | Heavy call | Long poll | Takes a run |
|---|---|---|---|---|
1 | No | No | No | |
1 | No | No | No | |
1 | No | No | No | |
1 | No | No | No | |
1 | No | No | No | |
1 | No | No | No | |
1 | Yes | No | No | |
2 to create. 1 to save a version, 2 when it also changes the name or description | One of them | No | No | |
2: one to start, one to wait up to 25 seconds. 1 when the run is done as it starts | The start | The wait | Yes | |
1 | No | With | No | |
1, up to 4 when it shrinks a page to fit 40 KB | No | No | No | |
1, up to 4 when it shrinks a page to fit 40 KB | No | No | No | |
1 to start, then 1 every 3 seconds while it waits: at most 8 with the default 20-second wait, 10 at 25 seconds | The start | No | No | |
1 | No | No | No | |
2 | No | No | No |
Reading a resource costs 1 request, the same as get_doc.
A typical first session, writing an indicator and trying it once, costs about ten requests: one search, three doc pages, two validations, a run and its results. That is well inside one minute's budget on any paid plan.
Heavy calls
run_script starts its run without waiting, then waits in a second request. Starting holds a heavy-call place only for a moment, so a run in progress never stops the app validating or saving. On Starter, with 2 heavy calls at once, the app can validate one script while it saves another, and a third call at that moment gets busy. The CLI or your own code running at the same time shares the same places.
Runs
Each run_script takes one of your runs at once while it executes, shared with the app and the Agent. When every slot is taken, an indicator or definition run waits in queued; a study run fails at once with busy. Your account can hold its runs at once plus 4 more queued; past that, run_script is refused with busy and told to retry after 15 seconds.
Running a definition over history takes no slot. Its events count toward your definition events limit, and past it the tool returns plan_limit.
Every run also has the bounds that apply to every plan: 50,000 bars in the window, 10,000 events kept from a definition run, and results kept for 7 days. Per-run bounds
Compute
Each run records compute: one unit per 1,000 bars evaluated, dependencies included. The account tool shows this month's total under compute_units. No plan includes or charges compute units yet.
Other caps
Saving a new script counts toward your plan's caps on indicators, definitions and studies, and a run reaches back only as far as your plan's history. Past a cap, save_script returns plan_limit; a window that ends before your history starts returns out_of_coverage. account shows every cap with its current count. Plans and limits
Spend less
Ask for summaries:
definition_eventswithsummaryis one request, however many events are stored.Name a time range or the outputs you want, so results fit in one page.
Let a long run finish before asking for more. Each
get_runwith a wait is a request and a long poll.Validate before running. Validation catches most mistakes for one request and no run.
