Error reference
Errors are written for the person reading them inside their AI client: what went wrong and where to fix it. HTTP errors stop the request before any tool runs, so no credits are used.
HTTP errors
When: The request had no Authorization header.
Fix: Add your token to the AI client config as Authorization: Bearer msk_live_…
{
"error": "token_missing",
"message": "No MarStack token was sent. Create one at
marstack.getinlytics.com/tokens and add it to
your AI client config."
}
When: The value does not start with msk_live_ or msk_test_.
Fix: Copy the token again from the Tokens page; it is shown once, when created.
{
"error": "token_malformed",
"message": "This is not a MarStack token. Tokens start
with msk_live_ or msk_test_."
}
When: No token with this value exists.
Fix: Create a new token on the Tokens page and replace it in your AI client.
{
"error": "token_invalid",
"message": "This token is not recognised. Create a new
one at marstack.getinlytics.com/tokens."
}
When: Someone revoked this token on the Tokens page.
Fix: Create a new token and replace it in your AI client.
{
"error": "token_revoked",
"message": "This token was revoked on 12 Oct 2026.
Create a new one at marstack.getinlytics.com/tokens."
}
When: The token's member left the workspace, lost the role, or the token cannot reach that workspace.
Fix: Ask the account owner for access, or create a new token as a current member.
{
"error": "token_no_access",
"message": "... Ask the account owner, or create a new
token at marstack.getinlytics.com/tokens."
}
When: A msk_test_ token was sent to the hosted server.
Fix: Use a msk_live_ token; test tokens only work on a local MarStack server.
{
"error": "token_env_mismatch",
"message": "Test tokens (msk_test_) only work on a
local MarStack server."
}
When: More than 100 requests in one minute from the same token.
Fix: Wait the number of seconds given, then try again. AI clients usually retry by themselves.
{
"error": "rate_limited",
"limit": "100 requests per minute",
"retry_after_seconds": 14
}
Inside a tool's answer
MCP tool calls always return HTTP 200. When a tool cannot run, its answer says why, and nothing is charged:
When: the account has fewer credits than the tool costs, or the workspace reached the monthly limit the owner set.
Fix: top up or upgrade at marstack.getinlytics.com/billing, or ask the owner to raise the workspace limit on the Team page.
{
"isError": true,
"content": [{ "type": "text", "text":
"Not enough credits: a GA4 audit needs 10 and
the account has 4. Top up or upgrade at
marstack.getinlytics.com/billing." }]
}
When: a platform API or a BigQuery query failed while the tool was running.
Fix: nothing to do: the credits are refunded and the answer ends with "No credits were charged." Try again or follow the message.
{
"isError": true,
"content": [{ "type": "text", "text":
"BigQuery: ... No credits were charged." }]
}