# Troubleshooting

> Fix common Nodaro MCP problems, from a wrong server URL, a failed sign-in and missing tools to failed jobs, uploads and error codes such as client_not_allowed.

Source: https://nodaro.ai/docs/mcp/troubleshooting

This page lists the most common problems with the **Nodaro MCP server** and how to fix them: connection and sign-in errors, tools that do not appear, jobs that fail or seem stuck, uploads, and the error codes that tools return. Start with the section that matches what you see.

## Connecting and signing in

### The client shows an OAuth error when you add the connector

1. Check that the URL is exactly `https://mcp.nodaro.ai/mcp`, with no trailing slash.
2. Check that `mcp.nodaro.ai` resolves on your network.
3. Check the discovery document. This command should return `200` with JSON:

```bash
curl https://mcp.nodaro.ai/.well-known/oauth-protected-resource
```

The same host also serves `/.well-known/oauth-authorization-server`, which should return `200` with JSON too.

### The sign-in never completes, or the URL is wrong

The server answers only at `https://mcp.nodaro.ai/mcp`. Two common mistakes fail before the sign-in reaches Nodaro:

- **`https://api.nodaro.ai/mcp`**: this domain does not exist, so the connection fails when it looks up the name.
- **`https://app.nodaro.ai/mcp`**: this is the MCP web page, not the server. A `POST` there returns `405` with the error code `wrong_mcp_host`, which names the correct URL.

Claude cannot edit a connector's URL. Delete the broken connector and add it again with `https://mcp.nodaro.ai/mcp`.

### The consent screen shows an orange warning about the client's name

That is expected. A client that registers itself chooses its own name, such as "Claude", and Nodaro does not verify it. The warning reminds you to check that the app asking for access is the one you are setting up before you click **Allow**.

### Registration fails with "Client not allowed"

Your client registered with a name that is not on the list of accepted clients. You can:

- Use a supported client, such as Claude, ChatGPT, Cursor, Cline, Continue or Goose.
- Register a developer app at [app.nodaro.ai/settings/developer-apps](https://app.nodaro.ai/settings/developer-apps) and use its client id and secret. See [Your own client](https://nodaro.ai/docs/mcp/connect/custom-client).
- On your own instance, ask the operator to add the client's name to `MCP_DCR_ALLOWLIST`, or to set `MCP_DYNAMIC_REGISTRATION=open`. See [MCP on a self-hosted install](https://nodaro.ai/docs/self-hosting/mcp).

### The assistant stopped working after a while

Access lasts 90 days, and there are no refresh tokens. When it expires, calls return `401`. Sign in again from your client, or remove the connector and add it again.

### Runs you did not start show "via MCP"

A connected MCP client started them on your behalf. Open [app.nodaro.ai/settings/developer-apps](https://app.nodaro.ai/settings/developer-apps), review the apps you authorized, and revoke any you do not expect.

## Tools are missing

### The client is connected but shows no tools, or only some

A tool whose permission you did not grant is left out of the tool list entirely. Remove the connector, add it again and allow every permission on the consent screen. Some tools also need more than one permission:

- **The studio generation tools** need both `workflows:write` and `workflows:execute`. With only one of them, none of these tools appears.
- **The workspace tools** need `workspaces:read` and `workspaces:write`, which connections authorized before workspaces existed do not have. Reconnect to get them.

[Permissions](https://nodaro.ai/docs/mcp/tools#permissions) lists which tool needs which permission.

### A tool from the docs is not in your list at all

Some tools exist only on Nodaro Cloud, such as the studio production and recast tools, `create_explainer`, `plan_edit`, `voice_changer_pro` and the credit tools. The workspace tools exist only where organizations are switched on, and `pro_3d_render` only on deployments that can run it. See [Tools only on Nodaro Cloud](https://nodaro.ai/docs/mcp/tools#tools-only-on-nodaro-cloud).

## Jobs and results

### A generation failed

Ask the assistant to call `get_job` or `diagnose_run` with the job id. Read `retryable` and `guidance`: when `retryable` is `false`, the same request will fail again unchanged, so change the settings or the input. When `suggestedProvider` is present, run the same prompt and references on that model. [When a job fails](https://nodaro.ai/docs/mcp/tools/jobs#when-a-job-fails) has the details. Credits reserved for a failed job are refunded, except after a failure in post-processing.

### A job says `pending_review`

The deployment holds results for a person to review. The job is still in progress, not failed. Keep checking it, and do not run it again: a duplicate would be held too.

### `wait_for_job` returns `timeout`

That is not an error. The job was still running when the wait ended, after at most 120 seconds. Call `wait_for_job` again, or poll `get_job` every 5 to 10 seconds. Videos usually take 2 to 10 minutes.

### The result card does not appear

Cards need a client that displays MCP Apps, such as Claude on the web. In other clients, ask the assistant to check the job with `get_job`. The result is always saved to your library.

### A run was charged twice after a timeout

Pass a `client_request_id` on `run_workflow`, `run_app`, `run_component` and the production tools, and reuse the same value when you retry. Nodaro then returns the first run instead of starting and charging a second one.

## Uploads

### `prepare_image_upload` fails in Claude on the web

The presigned upload needs a client that can reach the storage host from a shell, such as Cursor, Cline, Claude Desktop or Claude Code. In Claude on the web and on Android, use `upload_image_widget`, or `request_image_upload`, which gives you a link to open in your browser. See [Upload tools](https://nodaro.ai/docs/mcp/tools/uploads).

## Workflows

### `update_workflow_json` says the workflow was modified

Someone changed the workflow after you read it. Read it again with `get_workflow_json`, then send the change again with the new version.

### A setting you sent is not the one that was saved

A model does not accept every aspect ratio, resolution or quality. Nodaro changes an unsupported value to a supported one, or removes it, and lists each change under `adjustments`. Do not send the original value again; choose a model that supports it, using `list_models`.

### The Film Director's canvas stays empty

The skill adds a stage's nodes in one step after you approve the stage. Wait until Claude says it added them, then refresh. More fixes are in [Film Director](https://nodaro.ai/docs/mcp/film-director#if-something-goes-wrong).

## Error codes

| Code | Tool | What it means | What to do |
| --- | --- | --- | --- |
| `wrong_mcp_host` | The server | The client called the web page at `app.nodaro.ai/mcp` | Use `https://mcp.nodaro.ai/mcp` |
| `client_not_allowed` | Registration | The client name is not accepted | Use a supported client or a developer app |
| `too_many_open_registrations` | Registration | Too many unused registrations of one client in open mode | Use the registrations you have, or wait |
| `dcr_disabled` | Registration | The instance turned self-registration off | Use a client id and secret from the operator |
| `voice_not_found` | Speech tools | The voice id does not exist | Use a premade voice name, or a voice you cloned |
| `advanced_mode_unsupported` | Prompt and text tools | `advanced_mode` was used with a model that is not Gemini | Choose a Gemini model or turn advanced mode off |
| `locked_field` | `run_app` | `inputOverrides` tried to change where an output goes | Leave destinations as the app defines them |
| `portrait_required` | `generate_character` | The character has no approved portrait | Approve a portrait with `approve_portrait` first |
| `main_image_required` | Location, object and creature tools | There is no approved main image | Approve a main image first |
| `candidate_object_mismatch`, `candidate_creature_mismatch` | Approval tools | The candidate was not generated for this object or creature | Approve a candidate made for it |
| `scene_overlap` | `resolve_shot_sequence` | Two scenes have reveals in the same stretch of time | Keep each scene's cues before the next scene's |
| `not_available` | Studio production tools | The deployment does not serve studio productions | Do not retry; the feature is not available there |
| `studio_preview_unavailable` | `edit_studio_production` | The deployment cannot preview a batch | Nothing was sent; decide with the user whether to apply the batch without a preview |
| `not_finished` | `import_studio_production` | The plan job is still running | Wait for the job to finish, then import |
| `cloud_only_feature` | `combine_videos` | `smart_cut` was used on a self-hosted install | Join the clips without `smart_cut` |
| `payer_balance_jwt_only` | `check_balance`, `credit_transactions` | The deployment's shared billing account cannot be read by a connected client | Read the balance in the app |

## Frequently asked questions

### Why does my client show Nodaro as connected but list no tools?

The permissions granted on the consent screen do not cover the tools. Remove the connector, add it again, and allow every permission.

### Which URL should I use for the Nodaro MCP server?

Exactly https://mcp.nodaro.ai/mcp, with no trailing slash. api.nodaro.ai does not exist, and app.nodaro.ai/mcp is a web page, not the server.

### What does client_not_allowed mean?

Your client registered with a name that is not on the list of accepted clients. Use a supported client, or register a developer app in your Nodaro settings and use its client id and secret.

### My assistant stopped working after a few months. Why?

Access from an MCP client lasts 90 days, and there are no refresh tokens. Sign in again from your client, or remove the connector and add it again.

### I see runs marked via MCP that I did not start. What should I do?

A connected client started them on your behalf. Review the apps that can access your account at app.nodaro.ai/settings/developer-apps and revoke any you do not expect.
