ChartnautDocs

Troubleshooting MCP

Find what you see in the first column. Most problems are the sign-in, a permission the connection lacks, or a limit your plan shares with the CLI. An app shows a tool's error to you in its own words, so look for the code, such as busy, in what it quotes.

Signing in

What you see

Why

Fix

The app asks you to sign in again and again

Chartnaut refuses the app's token with 401: the connection was disconnected, lapsed after 30 days unused, or was ended because an old refresh token was used again. With an API key, the key is wrong, expired or revoked

Remove Chartnaut in the app and add it again. Check Connected apps on the Developers page for the connection. For a key, make a new one

The Chartnaut page says This request has expired

The sign-in request is over 10 minutes old, or its link is incomplete

Start the connection again from the app

The Chartnaut page says This request was already answered

Allow or Cancel was already clicked on it, perhaps in another tab

If the app is not connected, start again from the app

A page titled This sign-in link can't be used

Chartnaut does not know the app's registration, or the return address is not one the app registered

Remove Chartnaut in the app and add it again, so it registers afresh

API access is included on Starter and above when you click Allow

Your plan is Free

Upgrade, then click Allow again within the 10 minutes, or start again from the app

Too many sign-in attempts

More than 60 sign-in starts from your IP address in a minute

Wait a minute

The browser never opens a Chartnaut page

The app does not support signing in to remote MCP servers, or needs you to start it

Look for a sign-in or authenticate action in the app's MCP settings, or connect with an API key

Screenshot to capture · 4:3 · cli-mcp-troubleshooting-expired
The consent page showing This request has expired
Route/morpheus/oauth/consent?request=<an expired or unknown request id>
FocusThe consent card in its expired state: the heading 'This request has expired' and the line 'Go back to the app and connect again.'
StateSigned in as the capture account (user 36) on a Starter or higher plan, dark theme. Any request id that does not exist or is over 10 minutes old, such as request=0000
Sourceclient/src/routes/authenticated/morpheus/settings/ApiTokens/OAuthConsentPage.tsx:57 OAuthConsentPage
The consent page after its request expired.

The connection disappeared

A connection leaves Connected apps, and the app has to be approved again, for one of three reasons:

  • Someone clicked Disconnect on it.

  • The app ended it itself, as some do when you remove Chartnaut from them.

  • A refresh token was used again more than 30 seconds after it was swapped. Chartnaut cannot tell a stale copy from a stolen one, so it ends the connection. This happens when an app's settings are restored from a backup, or when two installs share a copied token file. If neither applies, check where else the app runs. Tokens and replay

A connection that has not been used for 30 days stays in the list, but the app has to sign in again.

Tool errors

Code or message

Why

Fix

plan_limit on every call, even connecting

Your plan is Free

Upgrade. The connection works again within a minute, without connecting again

plan_limit from one tool

That call would pass a plan cap: scripts of that kind, stored definition events, and so on

Upgrade, or delete scripts or events in the app to make room. account shows each cap

forbidden_scope

The connection or key lacks the permission this tool needs, for example an app that asked only to read, or a key made without runs:write

Reconnect and allow the permission, or use a key with that scope. Permissions lists which tool needs which

rate_limited

Past your plan's requests a minute, shared with the CLI and your API keys. Or 30 failed token checks from your IP address in a minute, usually a stale key retried by a config file

Wait 10 seconds, or 60 after failed checks. Find the stale key and replace it

busy

Past your heavy calls at once, often the CLI validating or saving at the same moment, or your run queue is full

Wait the seconds the error gives and retry once. Limits and cost

version_conflict

The script was saved elsewhere, often in the app, since the model read it

Nothing to fix: the app reads it again, re-applies its change and saves. Nothing was overwritten

conflict from save_script

You already have a script with that slug

Ask the app to change that script, which it does with base_version, or to pick another slug

script_invalid

The code does not lint or resolve. Nothing was saved or run

The app reads the diagnostics and fixes them. Ask it to validate before saving

unknown_instrument or out_of_coverage

The symbol does not exist, or the window ends before the history your plan reaches

Ask the app to look it up with list_instruments, which shows each instrument's dates

run_not_finished

Results were asked for before the run succeeded

The app calls get_run until it does. A failed run has no results: ask why it failed

forbidden, Origin not allowed

A browser-based client on a site Chartnaut does not recognise

Use Claude, ChatGPT or a desktop app, or run local tools on localhost

forbidden, Your account is on the waitlist

Your account is not active yet

Wait for access

Runs and results

What you see

Why

Fix

run_script comes back queued or running with no results

The run took longer than the 25 seconds a tool waits, or your plan's long polls at once were all in use, so it answered straight away

Ask the app to check again. It calls get_run with a wait

run_definition_over_history comes back collecting

A long window takes longer than one call waits

Ask again in a minute. definition_events with summary shows what is still running and what failed

A result ends with _truncated, or a page_note

The answer was over 40 KB

Ask for less: a time range, particular outputs or result keys, or the next page. The note says how

get_script shows file sizes but no code

The source is over 40 KB

Edit it in the app, or with the CLI: chartnaut pull fetches it as files

A study run fails with busy

Every one of your runs at once was in use. A study run never waits

Wait for another run to finish, often the Agent working in the app, and run it again

Claude Code, Cursor and Codex

What you see

Why

Fix

chartnaut mcp install claude --write says Claude Code's claude command was not found, on Windows, with Claude Code installed

The CLI tries claude, then claude.cmd. It will not pass a value containing a character PowerShell or cmd.exe would interpret, and a claude outside your PATH is not found

Check claude --version works in the same terminal. If it does and the CLI still says this, run the claude mcp add line that chartnaut mcp install claude prints yourself, in PowerShell

claude mcp add exited with code …

Chartnaut is already added to Claude Code

claude mcp remove chartnaut --scope user, then run --write again

no API key to write

The CLI is not signed in

chartnaut login, or set CHARTNAUT_TOKEN. Or use the browser sign-in

Cursor lists no Chartnaut tools

mcp.json is not valid JSON, the server is switched off in Cursor's MCP settings, or CHARTNAUT_TOKEN is not set where Cursor starts

Fix the file, switch the server on, or set the variable and restart Cursor. Cursor

…is not valid JSON… nothing was changed from chartnaut mcp install cursor --write

The CLI will not edit a file it cannot read

Fix the JSON, or add the server by hand

Codex lists no Chartnaut tools, or gets 401

CHARTNAUT_TOKEN is not set in the shell Codex starts from, or your Codex version names the config keys differently

Export the variable in that shell. Check Codex's MCP docs for your version. Codex

Your own MCP client

Status

Why

Fix

400

Accept lacks application/json or text/event-stream, the body is not JSON-RPC, or MCP-Protocol-Version names a version the server does not support

Send both types in Accept, and the version agreed in initialize

401

No bearer token, or it is expired or revoked

Follow resource_metadata in WWW-Authenticate to sign in, or refresh

405

GET or another method the server does not serve. It keeps no stream open

Send every message as its own POST

500 with failed to read body

The request is over 3 MB

Send less. A script's files are at most 2 MB

Call the MCP server and How the MCP server works cover the protocol. If something here does not match what you see, write to [email protected] with the app, the time and the error text.