Troubleshooting
Connection
| Symptom | Cause | Solution |
|---|---|---|
401 Unauthorized |
token wrong, expired or revoked | create a new token and enter it in the client |
429 Too Many Requests |
more than 60 requests per minute | wait a moment, check the agent for loops |
| client shows no tools | address without /api/mcp, or header missing |
check with the curl call |
| client cannot connect | client speaks only SSE or to local processes | use a client with HTTP transport |
Answers from the server
Every answer carries a machine field in _meta: lalabase/kind on a result, such as ok or
empty, and lalabase/code on an error, on a refusal also lalabase/reason.
| Message | Code | Cause and solution |
|---|---|---|
| This token is read-only; writes are not permitted. | read_only |
Write with a read-only token. Turn off Read-only access on the token. |
| Missing required arguments: project_id | invalid_input |
The agent named no project. list_projects provides the id. |
| Project not found or not accessible. | not_found |
Wrong id, project outside the reach or, for the code tools, no right to the repository. |
| No ticket found for … | empty in lalabase/kind |
The ticket does not exist, or you may not read it. |
| Not authorized. | forbidden |
The ticket is readable, but you lack the right for this action. |
| exactly one change per call … | invalid_input |
update_ticket with more than one change. Split into two calls. |
| status is not a status of this project … | refused |
Wrong status key. The values are in meta.available_statuses. |
| a user in this change cannot be assigned in this project | refused |
The person cannot be assigned to the project. |
| this project has no status field | refused |
The project has no status field. |
| notification is archived … | refused |
An archived notification cannot be marked. |
| create failed: … | refused |
Lalabase refuses the ticket, for example because of a wrong status key. Read the message. |
| AI features are disabled for this organisation. | refused |
AI was switched off after the repository was read in. search_code_symbols needs it. |
| idempotency_key already used with different parameters | invalid_input |
The same key with other arguments. Use a new key. |
Common surprises
The status filter returns zero hits. Status belongs to the project. Let the agent call
list_tickets once without a filter and read meta.available_statuses.
The people directory is "not found". The token does not reach all projects of the organisation.
Organisations are missing from the inbox. The token does not reach them. For all organisations you need All organisations, including future ones.
Code tools return nothing. The repository is not connected or not read in yet. Without AI switched on it is never read in. If you may not see it, Lalabase reports the project as not found, even though tickets of the same project work.